@appbaseio/reactivesearch-vue 1.16.0-alpha.3 → 1.16.0-alpha.30

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 (101) hide show
  1. package/dist/@appbaseio/reactivesearch-vue.umd.js +7438 -6512
  2. package/dist/@appbaseio/reactivesearch-vue.umd.js.map +1 -1
  3. package/dist/@appbaseio/reactivesearch-vue.umd.min.js +5 -5
  4. package/dist/@appbaseio/reactivesearch-vue.umd.min.js.map +1 -1
  5. package/dist/cjs/Button-d2f1aeda.js +68 -0
  6. package/dist/cjs/{DownShift-b09da079.js → CancelSvg-82021d23.js} +60 -16
  7. package/dist/cjs/Card-4b915733.js +30 -0
  8. package/dist/cjs/{ComponentWrapper-5a0a8849.js → ComponentWrapper-ab813390.js} +40 -21
  9. package/dist/cjs/{Container-f84e72fc.js → Container-8a08d663.js} +3 -11
  10. package/dist/cjs/DataSearch.js +341 -391
  11. package/dist/cjs/{DropDown-c66be1a8.js → DropDown-0359da33.js} +76 -96
  12. package/dist/cjs/DynamicRangeSlider.js +47 -24
  13. package/dist/cjs/Flex-699639d2.js +52 -0
  14. package/dist/cjs/FormControlList-73497794.js +47 -0
  15. package/dist/cjs/Input-c6f181d5.js +79 -0
  16. package/dist/cjs/ListItem-933c27e4.js +46 -0
  17. package/dist/cjs/MultiDropdownList.js +69 -45
  18. package/dist/cjs/MultiList.js +36 -21
  19. package/dist/cjs/MultiRange.js +20 -14
  20. package/dist/cjs/{Pagination-91df3b77.js → Pagination-1b2320a7.js} +4 -3
  21. package/dist/cjs/RangeInput.js +25 -45
  22. package/dist/cjs/RangeSlider.js +31 -28
  23. package/dist/cjs/ReactiveBase.js +55 -34
  24. package/dist/cjs/ReactiveComponent.js +80 -36
  25. package/dist/cjs/ReactiveGoogleMap.js +320 -234
  26. package/dist/cjs/ReactiveList.js +149 -202
  27. package/dist/cjs/ResultCard.js +8 -6
  28. package/dist/cjs/ResultList.js +8 -6
  29. package/dist/cjs/SelectedFilters.js +25 -12
  30. package/dist/cjs/SingleDropdownList.js +69 -45
  31. package/dist/cjs/SingleList.js +44 -26
  32. package/dist/cjs/SingleRange.js +17 -11
  33. package/dist/cjs/StateProvider.js +11 -7
  34. package/dist/cjs/{Title-e9beb554.js → Title-39765ee6.js} +3 -11
  35. package/dist/cjs/ToggleButton.js +35 -16
  36. package/dist/cjs/{_rollupPluginBabelHelpers-280a574c.js → _rollupPluginBabelHelpers-4abdbfff.js} +11 -1
  37. package/dist/cjs/{index-e0583d76.js → index-2a8358cd.js} +77 -9
  38. package/dist/cjs/index.js +23 -19
  39. package/dist/cjs/initReactivesearch.js +80 -38
  40. package/dist/cjs/install.js +20 -18
  41. package/dist/cjs/ssr-c333c82c.js +39 -0
  42. package/dist/cjs/{utils-d1ea9f95.js → utils-23afb20b.js} +2 -2
  43. package/dist/cjs/version.js +1 -1
  44. package/dist/cjs/{vueTypes-c21f265b.js → vueTypes-6de9d2a9.js} +9 -4
  45. package/dist/es/Button-799185e2.js +59 -0
  46. package/dist/es/{DownShift-d8f2500f.js → CancelSvg-4d9e0857.js} +56 -17
  47. package/dist/es/Card-04b3c33e.js +23 -0
  48. package/dist/es/{ComponentWrapper-d0b21b95.js → ComponentWrapper-459505fd.js} +40 -21
  49. package/dist/es/Container-4383c6f0.js +10 -0
  50. package/dist/es/DataSearch.js +339 -389
  51. package/dist/es/{DropDown-5dbd69c2.js → DropDown-168b60f6.js} +75 -95
  52. package/dist/es/DynamicRangeSlider.js +47 -24
  53. package/dist/es/Flex-aac91505.js +47 -0
  54. package/dist/es/FormControlList-fe389a2e.js +40 -0
  55. package/dist/es/Input-d8519224.js +71 -0
  56. package/dist/es/ListItem-bdb6d53d.js +39 -0
  57. package/dist/es/MultiDropdownList.js +69 -45
  58. package/dist/es/MultiList.js +36 -21
  59. package/dist/es/MultiRange.js +20 -14
  60. package/dist/es/{Pagination-800af44f.js → Pagination-b3e4054a.js} +4 -3
  61. package/dist/es/RangeInput.js +25 -45
  62. package/dist/es/RangeSlider.js +31 -28
  63. package/dist/es/ReactiveBase.js +55 -34
  64. package/dist/es/ReactiveComponent.js +80 -36
  65. package/dist/es/ReactiveGoogleMap.js +320 -234
  66. package/dist/es/ReactiveList.js +149 -202
  67. package/dist/es/ResultCard.js +8 -6
  68. package/dist/es/ResultList.js +8 -6
  69. package/dist/es/SelectedFilters.js +25 -12
  70. package/dist/es/SingleDropdownList.js +69 -45
  71. package/dist/es/SingleList.js +44 -26
  72. package/dist/es/SingleRange.js +17 -11
  73. package/dist/es/StateProvider.js +11 -7
  74. package/dist/es/Title-579f8d6c.js +10 -0
  75. package/dist/es/ToggleButton.js +35 -16
  76. package/dist/es/{_rollupPluginBabelHelpers-c9fbe19f.js → _rollupPluginBabelHelpers-ecf6c03c.js} +11 -1
  77. package/dist/es/{index-1fe91a0a.js → index-4755c9a0.js} +74 -10
  78. package/dist/es/index.js +23 -19
  79. package/dist/es/initReactivesearch.js +80 -38
  80. package/dist/es/install.js +20 -18
  81. package/dist/es/ssr-e3196de1.js +33 -0
  82. package/dist/es/{utils-ce3d86fd.js → utils-3a32e13f.js} +2 -2
  83. package/dist/es/version.js +1 -1
  84. package/dist/es/{vueTypes-98d938a9.js → vueTypes-9326e0be.js} +9 -4
  85. package/package.json +86 -78
  86. package/dist/cjs/Button-78d8bc26.js +0 -146
  87. package/dist/cjs/Card-b4af314f.js +0 -58
  88. package/dist/cjs/Flex-737c55be.js +0 -160
  89. package/dist/cjs/FormControlList-08dfb28e.js +0 -105
  90. package/dist/cjs/Input-643d02a7.js +0 -178
  91. package/dist/cjs/ListItem-0c58c5d2.js +0 -84
  92. package/dist/cjs/ssr-b7a729f9.js +0 -47
  93. package/dist/es/Button-6c71c66e.js +0 -137
  94. package/dist/es/Card-ecf70ba1.js +0 -51
  95. package/dist/es/Container-f5efec9e.js +0 -18
  96. package/dist/es/Flex-40a74d8a.js +0 -155
  97. package/dist/es/FormControlList-b96aebef.js +0 -98
  98. package/dist/es/Input-dfd9dd40.js +0 -170
  99. package/dist/es/ListItem-da73bc7d.js +0 -77
  100. package/dist/es/Title-22c2f3bf.js +0 -18
  101. package/dist/es/ssr-2f57791d.js +0 -41
@@ -1,25 +1,25 @@
1
1
  import { Actions, helper } from '@appbaseio/reactivecore';
2
- import { a as _extends, b as _objectWithoutPropertiesLoose, d as _inheritsLoose, _ as _taggedTemplateLiteralLoose, c as _toPropertyKey } from './_rollupPluginBabelHelpers-c9fbe19f.js';
2
+ import { a as _extends, d as _inheritsLoose, _ as _taggedTemplateLiteralLoose, b as _objectWithoutPropertiesLoose, c as _toPropertyKey } from './_rollupPluginBabelHelpers-ecf6c03c.js';
3
3
  import VueTypes from 'vue-types';
4
4
  import { componentTypes } from '@appbaseio/reactivecore/lib/utils/constants';
5
5
  import 'emotion';
6
6
  import styled, { css } from '@appbaseio/vue-emotion';
7
7
  import 'polished';
8
- import './Button-6c71c66e.js';
9
- import { t as types } from './vueTypes-98d938a9.js';
10
- import { P as Pagination } from './Pagination-800af44f.js';
8
+ import './Button-799185e2.js';
9
+ import { t as types } from './vueTypes-9326e0be.js';
10
+ import { P as Pagination } from './Pagination-b3e4054a.js';
11
11
  import '@appbaseio/reactivecore/lib/utils/transform';
12
12
  import 'redux';
13
- import { h as hasCustomRenderer, i as isQueryIdentical, g as getComponent, a as isFunction, c as connect } from './index-1fe91a0a.js';
14
- import { C as ComponentWrapper } from './ComponentWrapper-d0b21b95.js';
13
+ import { h as hasCustomRenderer, i as isQueryIdentical, g as getComponent, a as isFunction, c as connect } from './index-4755c9a0.js';
14
+ import { C as ComponentWrapper } from './ComponentWrapper-459505fd.js';
15
15
  import _mergeJSXProps from '@vue/babel-helper-vue-jsx-merge-props';
16
- import { C as Checkbox } from './FormControlList-b96aebef.js';
16
+ import { C as Checkbox } from './FormControlList-fe389a2e.js';
17
17
  import * as GmapMapFull from 'gmap-vue';
18
18
  import Map from 'gmap-vue/dist/components-implementation/map';
19
19
  import geohash from 'ngeohash';
20
20
  import GmapCluster from 'gmap-vue/dist/components/cluster';
21
- import Marker from 'gmap-vue/dist/components/marker';
22
21
  import InfoWindow from 'gmap-vue/dist/components-implementation/info-window';
22
+ import Marker from 'gmap-vue/dist/components/marker';
23
23
  import MapElementMixin from 'gmap-vue/dist/mixins/map-element';
24
24
 
25
25
  var setStreaming = Actions.setStreaming,
@@ -68,7 +68,7 @@ function withDistinctLat(loc, count) {
68
68
 
69
69
  var suffix = 1 / Math.pow(10, noiseFactor) * count;
70
70
 
71
- var location = _extends(_extends({}, loc), {}, {
71
+ var location = _extends({}, loc, {
72
72
  lat: parseFloat((loc.lat + suffix).toFixed(length))
73
73
  });
74
74
 
@@ -120,14 +120,13 @@ var ReactiveMap = {
120
120
  react: types.react,
121
121
  size: types.number,
122
122
  sortBy: types.sortBy,
123
- URLParams: types.bool,
124
- autoCenter: types.bool,
123
+ URLParams: VueTypes.bool,
124
+ autoCenter: VueTypes.bool,
125
125
  getMapRef: VueTypes.func.isRequired,
126
126
  center: types.location,
127
127
  defaultCenter: types.location,
128
128
  defaultPin: types.string,
129
129
  defaultZoom: VueTypes.number.def(13),
130
- markerProps: types.props,
131
130
  defaultQuery: types.func,
132
131
  innerClass: types.style,
133
132
  loader: types.title,
@@ -136,19 +135,19 @@ var ReactiveMap = {
136
135
  renderError: types.title,
137
136
  pages: VueTypes.number.def(5),
138
137
  currentPage: VueTypes.number.def(0),
139
- pagination: types.bool,
140
- showMarkers: types.bool,
141
- defaultSearchAsMove: types.bool,
142
- showSearchAsMove: types.bool,
138
+ pagination: VueTypes.bool,
139
+ showMarkers: VueTypes.bool,
140
+ defaultSearchAsMove: VueTypes.bool,
141
+ showSearchAsMove: VueTypes.bool,
143
142
  defaultRadius: types.number,
144
143
  unit: types.string,
145
- autoClosePopover: types.bool,
144
+ autoClosePopover: VueTypes.bool,
146
145
  renderMap: VueTypes.func.isRequired,
147
146
  renderPopover: VueTypes.func,
148
- onDragEnd: types.func,
149
- onZoomChanged: types.func,
150
- onIdle: types.func
147
+ calculateMarkers: VueTypes.func,
148
+ searchAsMoveLabel: VueTypes.string.def('Search as I move the map')
151
149
  },
150
+ preserveCenter: false,
152
151
  data: function data() {
153
152
  var props = this.$props;
154
153
  var currentPageState = 0;
@@ -162,8 +161,8 @@ var ReactiveMap = {
162
161
  zoom: props.defaultZoom,
163
162
  searchAsMove: props.defaultSearchAsMove,
164
163
  currentPageState: currentPageState,
165
- preserveCenter: false,
166
- mapBoxBounds: null
164
+ mapBoxBounds: null,
165
+ markersData: null
167
166
  };
168
167
  return this.__state;
169
168
  },
@@ -175,7 +174,7 @@ var ReactiveMap = {
175
174
  var _this$getAllData = this.getAllData(),
176
175
  resultsToRender = _this$getAllData.resultsToRender;
177
176
 
178
- return _extends(_extends({}, getResultStats(this)), {}, {
177
+ return _extends({}, getResultStats(this), {
179
178
  currentPage: this.currentPageState,
180
179
  displayedResults: resultsToRender.length
181
180
  });
@@ -210,16 +209,19 @@ var ReactiveMap = {
210
209
  var queryOptions = getOptionsFromQuery(this.$defaultQuery);
211
210
 
212
211
  if (queryOptions) {
213
- options = _extends(_extends({}, options), getOptionsFromQuery(this.$defaultQuery));
212
+ options = _extends({}, options, getOptionsFromQuery(this.$defaultQuery));
214
213
  } // Update calculated default query in store
215
214
 
216
215
 
217
- this.setQueryOptions(this.$props.componentId, options, !query);
216
+ this.setQueryOptions(this.$props.componentId, options, false);
218
217
  var persistMapQuery = true;
219
218
  var forceExecute = true; // Update default query to include the geo bounding box query
220
219
 
221
220
  this.setDefaultQueryForRSAPI();
222
- this.props.setMapData(this.componentId, query, persistMapQuery, forceExecute);
221
+ var meta = {
222
+ mapBoxBounds: this.mapBoxBounds
223
+ };
224
+ this.setMapData(this.componentId, query, persistMapQuery, forceExecute, meta);
223
225
  this.currentPageState = 0;
224
226
  this.from = 0;
225
227
  }
@@ -250,7 +252,45 @@ var ReactiveMap = {
250
252
  }
251
253
  },
252
254
  rawData: function rawData(newVal, oldVal) {
255
+ var _this = this;
256
+
253
257
  if (!isEqual(newVal, oldVal)) {
258
+ var promotedResults = this.promotedResults,
259
+ hits = this.hits;
260
+ var results = parseHits(hits) || [];
261
+ var parsedPromotedResults = parseHits(promotedResults) || [];
262
+ var filteredResults = results;
263
+
264
+ if (parsedPromotedResults.length) {
265
+ var ids = parsedPromotedResults.map(function (item) {
266
+ return item._id;
267
+ }).filter(Boolean);
268
+
269
+ if (ids) {
270
+ filteredResults = filteredResults.filter(function (item) {
271
+ return !ids.includes(item._id);
272
+ });
273
+ }
274
+
275
+ filteredResults = [].concat(parsedPromotedResults, filteredResults);
276
+ }
277
+
278
+ filteredResults = filteredResults.filter(function (item) {
279
+ return !!item[_this.dataField];
280
+ }).map(function (item) {
281
+ var _extends2;
282
+
283
+ return _extends({}, item, (_extends2 = {}, _extends2[_this.dataField] = getLocationObject(item[_this.dataField]), _extends2));
284
+ });
285
+ this.filteredResults = this.addNoise(filteredResults);
286
+
287
+ if (this.calculateMarkers) {
288
+ this.markersData = this.calculateMarkers({
289
+ data: this.filteredResults,
290
+ rawData: this.rawData
291
+ }) || [];
292
+ }
293
+
254
294
  this.$emit('data', this.getData());
255
295
  }
256
296
  },
@@ -288,18 +328,18 @@ var ReactiveMap = {
288
328
  return this.parseLocation(MAP_CENTER);
289
329
  },
290
330
  addNoise: function addNoise(hits) {
291
- var _this = this;
331
+ var _this2 = this;
292
332
 
293
333
  var hitMap = {};
294
334
  var updatedHits = [];
295
335
  hits.forEach(function (item) {
296
336
  var updatedItem = _extends({}, item);
297
337
 
298
- var location = _this.parseLocation(item[_this.dataField]);
338
+ var location = _this2.parseLocation(item[_this2.dataField]);
299
339
 
300
340
  var key = JSON.stringify(location);
301
341
  var count = hitMap[key] || 0;
302
- updatedItem[_this.dataField] = count ? withDistinctLat(location, count) : location;
342
+ updatedItem[_this2.dataField] = count ? withDistinctLat(location, count) : location;
303
343
  updatedHits = [].concat(updatedHits, [updatedItem]);
304
344
  hitMap[key] = count + 1;
305
345
  });
@@ -313,10 +353,10 @@ var ReactiveMap = {
313
353
  return null;
314
354
  },
315
355
  getHitsCenter: function getHitsCenter(hits) {
316
- var _this2 = this;
356
+ var _this3 = this;
317
357
 
318
358
  var data = hits.map(function (hit) {
319
- return hit[_this2.dataField];
359
+ return hit[_this3.dataField];
320
360
  });
321
361
 
322
362
  if (data.length) {
@@ -357,7 +397,7 @@ var ReactiveMap = {
357
397
  return false;
358
398
  },
359
399
  getCenter: function getCenter(hits) {
360
- var _this3 = this;
400
+ var _this4 = this;
361
401
 
362
402
  if (this.center) {
363
403
  return this.parseLocation(this.center);
@@ -365,10 +405,10 @@ var ReactiveMap = {
365
405
 
366
406
  var mapRef = this.getMapRef();
367
407
 
368
- if (mapRef && typeof mapRef.getCenter === 'function' && this.preserveCenter) {
408
+ if (mapRef && typeof mapRef.getCenter === 'function' && this.$options.preserveCenter) {
369
409
  var currentCenter = mapRef.getCenter();
370
410
  setTimeout(function () {
371
- _this3.preserveCenter = false;
411
+ _this4.$options.preserveCenter = false;
372
412
  }, 100);
373
413
  return this.parseLocation({
374
414
  lat: currentCenter.lat(),
@@ -388,27 +428,31 @@ var ReactiveMap = {
388
428
  },
389
429
  handleZoomChange: function handleZoomChange(zoom) {
390
430
  if (zoom) {
431
+ var prevZoom = this.zoom;
432
+
391
433
  if (this.searchAsMove) {
392
434
  this.zoom = zoom;
393
- this.preserveCenter = true;
435
+ this.$options.preserveCenter = true;
394
436
  this.setGeoQuery(true);
395
437
  } else {
396
438
  this.zoom = zoom;
397
439
  }
398
440
 
399
- if (this.onZoomChanged) this.onZoomChanged(zoom);
441
+ if (prevZoom !== zoom) {
442
+ this.$emit('zoom-changed', zoom);
443
+ }
400
444
  }
401
445
  },
402
446
  handleOnDragEnd: function handleOnDragEnd() {
403
447
  if (this.searchAsMove) {
404
- this.preserveCenter = true;
448
+ this.$options.preserveCenter = true;
405
449
  this.setGeoQuery(true);
406
450
  }
407
451
 
408
- if (this.onDragEnd) this.onDragEnd();
452
+ this.$emit('drag-end');
409
453
  },
410
454
  handlePreserveCenter: function handlePreserveCenter(preserveCenter) {
411
- this.preserveCenter = preserveCenter;
455
+ this.$options.preserveCenter = preserveCenter;
412
456
  },
413
457
  handleOnIdle: function handleOnIdle() {
414
458
  // only make the geo_bounding query if we have hits data
@@ -419,7 +463,7 @@ var ReactiveMap = {
419
463
  this.setGeoQuery(executeUpdate);
420
464
  }
421
465
 
422
- if (this.onIdle) this.onIdle();
466
+ this.$emit('idle');
423
467
  },
424
468
  setGeoQuery: function setGeoQuery(executeUpdate) {
425
469
  if (executeUpdate === void 0) {
@@ -448,7 +492,6 @@ var ReactiveMap = {
448
492
  defaultPin = this.defaultPin,
449
493
  renderPopover = this.renderPopover,
450
494
  autoClosePopover = this.autoClosePopover,
451
- markerProps = this.markerProps,
452
495
  renderItem = this.renderItem;
453
496
  return {
454
497
  resultsToRender: data,
@@ -461,17 +504,14 @@ var ReactiveMap = {
461
504
  renderPopover: renderPopover,
462
505
  autoClosePopover: autoClosePopover,
463
506
  renderSearchAsMove: this.renderSearchAsMove,
464
- markerProps: markerProps,
465
507
  handlePreserveCenter: this.handlePreserveCenter,
466
- preserveCenter: this.preserveCenter,
508
+ preserveCenter: this.$options.preserveCenter,
467
509
  handleOnDragEnd: this.handleOnDragEnd,
468
510
  handleOnIdle: this.handleOnIdle,
469
511
  handleZoomChange: this.handleZoomChange
470
512
  };
471
513
  },
472
514
  getAllData: function getAllData() {
473
- var _this4 = this;
474
-
475
515
  var size = this.size,
476
516
  promotedResults = this.promotedResults,
477
517
  customData = this.customData,
@@ -479,31 +519,13 @@ var ReactiveMap = {
479
519
  hits = this.hits;
480
520
  var results = parseHits(hits) || [];
481
521
  var parsedPromotedResults = parseHits(promotedResults) || [];
482
- var filteredResults = results;
483
522
  var base = currentPage * size;
523
+ var resultsToRender = this.filteredResults || [];
484
524
 
485
- if (parsedPromotedResults.length) {
486
- var ids = parsedPromotedResults.map(function (item) {
487
- return item._id;
488
- }).filter(Boolean);
489
-
490
- if (ids) {
491
- filteredResults = filteredResults.filter(function (item) {
492
- return !ids.includes(item._id);
493
- });
494
- }
495
-
496
- filteredResults = [].concat(parsedPromotedResults, filteredResults);
525
+ if (this.markersData) {
526
+ resultsToRender = this.markersData;
497
527
  }
498
528
 
499
- filteredResults = filteredResults.filter(function (item) {
500
- return !!item[_this4.dataField];
501
- }).map(function (item) {
502
- var _extends2;
503
-
504
- return _extends(_extends({}, item), {}, (_extends2 = {}, _extends2[_this4.dataField] = getLocationObject(item[_this4.dataField]), _extends2));
505
- });
506
- var resultsToRender = this.addNoise(filteredResults);
507
529
  return {
508
530
  results: results,
509
531
  resultsToRender: resultsToRender,
@@ -554,7 +576,7 @@ var ReactiveMap = {
554
576
  options.from = this.$data.from;
555
577
  this.from = value;
556
578
  this.currentPageState = page;
557
- this.loadMoreAction(this.componentId, _extends(_extends({}, options), {}, {
579
+ this.loadMoreAction(this.componentId, _extends({}, options, {
558
580
  from: value
559
581
  }), false);
560
582
 
@@ -566,29 +588,6 @@ var ReactiveMap = {
566
588
  setDefaultQueryForRSAPI: function setDefaultQueryForRSAPI() {
567
589
  if (this.defaultQuery && typeof this.defaultQuery === 'function') {
568
590
  var defaultQuery = this.defaultQuery();
569
-
570
- if (this.mapBoxBounds) {
571
- var _geo_bounding_box;
572
-
573
- var geoQuery = {
574
- geo_bounding_box: (_geo_bounding_box = {}, _geo_bounding_box[this.dataField] = this.mapBoxBounds, _geo_bounding_box)
575
- };
576
-
577
- var _defaultQuery = defaultQuery,
578
- query = _defaultQuery.query,
579
- options = _objectWithoutPropertiesLoose(_defaultQuery, ["query"]);
580
-
581
- if (query) {
582
- // adds defaultQuery's query to geo-query
583
- // to generate a map query
584
- defaultQuery = _extends({
585
- query: {
586
- must: [geoQuery, query]
587
- }
588
- }, options);
589
- }
590
- }
591
-
592
591
  this.setDefaultQuery(this.componentId, defaultQuery);
593
592
  }
594
593
  },
@@ -612,7 +611,7 @@ var ReactiveMap = {
612
611
  var west;
613
612
 
614
613
  if (mapBounds) {
615
- var _geo_bounding_box2;
614
+ var _geo_bounding_box;
616
615
 
617
616
  north = mapBounds.getNorthEast().lat();
618
617
  south = mapBounds.getSouthWest().lat();
@@ -624,7 +623,7 @@ var ReactiveMap = {
624
623
  };
625
624
  this.mapBoxBounds = boundingBoxCoordinates;
626
625
  var geoQuery = {
627
- geo_bounding_box: (_geo_bounding_box2 = {}, _geo_bounding_box2[this.dataField] = boundingBoxCoordinates, _geo_bounding_box2)
626
+ geo_bounding_box: (_geo_bounding_box = {}, _geo_bounding_box[this.dataField] = boundingBoxCoordinates, _geo_bounding_box)
628
627
  };
629
628
 
630
629
  if (this.$defaultQuery) {
@@ -667,7 +666,7 @@ var ReactiveMap = {
667
666
  var value = this.from + this.size;
668
667
  var options = getQueryOptions(this.$props);
669
668
  this.from = value;
670
- this.loadMoreAction(this.componentId, _extends(_extends({}, options), {}, {
669
+ this.loadMoreAction(this.componentId, _extends({}, options, {
671
670
  from: value
672
671
  }), true);
673
672
  }
@@ -695,13 +694,14 @@ var ReactiveMap = {
695
694
  base = _this$getAllData3.base;
696
695
 
697
696
  return results.map(function (result, index) {
698
- return _extends(_extends({}, result), {}, {
697
+ return _extends({}, result, {
699
698
  _click_id: base + index
700
699
  });
701
700
  });
702
701
  },
703
702
  toggleSearchAsMove: function toggleSearchAsMove() {
704
703
  this.searchAsMove = !this.searchAsMove;
704
+ this.$emit('search-as-move', this.searchAsMove);
705
705
  },
706
706
  renderErrorComponent: function renderErrorComponent() {
707
707
  var renderError = this.$scopedSlots.renderError || this.$props.renderError;
@@ -747,7 +747,7 @@ var ReactiveMap = {
747
747
  "className": getClassName(this.innerClass, 'label') || null,
748
748
  "for": this.$props.componentId + "-searchasmove"
749
749
  }
750
- }, ["Search as I move the map"])]);
750
+ }, [this.searchAsMoveLabel])]);
751
751
  }
752
752
 
753
753
  return null;
@@ -801,7 +801,7 @@ var ReactiveMap = {
801
801
 
802
802
  if (this.$props.defaultQuery) {
803
803
  this.$defaultQuery = this.$props.defaultQuery();
804
- options = _extends(_extends({}, options), getOptionsFromQuery(this.$defaultQuery)); // Override sort query with defaultQuery's sort if defined
804
+ options = _extends({}, options, getOptionsFromQuery(this.$defaultQuery)); // Override sort query with defaultQuery's sort if defined
805
805
 
806
806
  if (this.$defaultQuery.sort) {
807
807
  options.sort = this.$defaultQuery.sort;
@@ -815,7 +815,10 @@ var ReactiveMap = {
815
815
  var forceExecute = false; // Update default query for RS API
816
816
 
817
817
  this.setDefaultQueryForRSAPI();
818
- this.setMapData(this.componentId, this.$defaultQuery.query, persistMapQuery, forceExecute);
818
+ var meta = {
819
+ mapBoxBounds: this.mapBoxBounds
820
+ };
821
+ this.setMapData(this.componentId, this.$defaultQuery.query, persistMapQuery, forceExecute, meta);
819
822
  } else {
820
823
  // only apply geo-distance when defaultQuery prop is not set
821
824
  var query = this.getGeoDistanceQuery();
@@ -835,11 +838,11 @@ var ReactiveMap = {
835
838
 
836
839
  var center = this.center || this.defaultCenter;
837
840
  var coordinatesObject = this.getArrPosition(center);
838
- var meta = {
841
+ var _meta = {
839
842
  distance: this.defaultRadius,
840
843
  coordinates: coordinatesObject.lat + ", " + coordinatesObject.lon
841
844
  };
842
- this.setMapData(this.componentId, query, _persistMapQuery, _forceExecute, meta);
845
+ this.setMapData(this.componentId, query, _persistMapQuery, _forceExecute, _meta);
843
846
  }
844
847
  }
845
848
 
@@ -849,7 +852,7 @@ var ReactiveMap = {
849
852
  var h = arguments[0];
850
853
  var loader = this.$scopedSlots.loader || this.$props.loader;
851
854
  return h("div", {
852
- "style": _extends(_extends({}, style), this.$props.style),
855
+ "style": _extends({}, style, this.$props.style),
853
856
  "class": this.$props.className
854
857
  }, [this.renderErrorComponent(), this.isLoading && loader, this.hasCustomRender ? this.getComponent() : null, this.renderMap(this.getMapParams()), this.pagination ? this.renderPagination() : null]);
855
858
  }
@@ -893,9 +896,46 @@ ReactiveMap.install = function (Vue) {
893
896
 
894
897
  ReactiveMap.componentType = componentTypes.reactiveMap;
895
898
 
899
+ var InfoWindowWrapper = {
900
+ name: 'InfoWindowWrapper',
901
+ props: {
902
+ id: VueTypes.string,
903
+ renderPopover: VueTypes.func,
904
+ infoWindowProps: VueTypes.object,
905
+ events: VueTypes.object
906
+ },
907
+ data: function data() {
908
+ return {
909
+ infoWindowRef: null
910
+ };
911
+ },
912
+ mounted: function mounted() {
913
+ this.infoWindowRef = this.$refs[this.id + "-Info-Window"];
914
+ },
915
+ methods: {
916
+ handleClose: function handleClose() {
917
+ this.infoWindowRef.$infoWindowObject.close();
918
+ }
919
+ },
920
+ render: function render() {
921
+ var h = arguments[0];
922
+ var renderPopover = this.renderPopover,
923
+ events = this.events;
924
+ return h(InfoWindow, {
925
+ "ref": this.id + "-Info-Window",
926
+ "props": _extends({}, this.infoWindowProps),
927
+ "on": _extends({}, events)
928
+ }, [h("div", [renderPopover(this.handleClose)])]);
929
+ }
930
+ };
931
+
896
932
  var MarkerWithLabel = {
897
933
  name: 'MarkerWithLabel',
898
934
  props: {
935
+ metaData: {
936
+ type: Object,
937
+ "default": undefined
938
+ },
899
939
  marker: {
900
940
  type: Object,
901
941
  "default": undefined
@@ -995,6 +1035,7 @@ var MarkerWithLabel = {
995
1035
  var _this3;
996
1036
 
997
1037
  _this3 = _window$google$maps$O.call(this) || this;
1038
+ _this3.metaData = self.metaData;
998
1039
 
999
1040
  _this3.setMap(map2);
1000
1041
 
@@ -1160,47 +1201,17 @@ var MarkerWithLabel = {
1160
1201
  },
1161
1202
  "on": {
1162
1203
  "mouseover": this.handleMouseOver,
1163
- "focus": this.handleFocus,
1164
1204
  "mouseout": this.handleMouseOut,
1165
- "blur": this.handleBlur,
1166
1205
  "click": this.handleClick
1167
1206
  }
1168
1207
  }, [this.renderMarker()]);
1169
1208
  }
1170
1209
  };
1171
1210
 
1172
- function _templateObject3() {
1173
- var data = _taggedTemplateLiteralLoose(["\n\t&:hover,\n\t&:focus {\n\t\tz-index: 200;\n\t}\n"]);
1174
-
1175
- _templateObject3 = function _templateObject3() {
1176
- return data;
1177
- };
1178
-
1179
- return data;
1180
- }
1181
-
1182
- function _templateObject2() {
1183
- var data = _taggedTemplateLiteralLoose(["\n\tborder-color: rgba(0, 0, 0, 0.2);\n\tborder-style: solid;\n\tborder-width: 0 1px 1px 0;\n\tmargin-left: -6px;\n\tbackground-color: #fff;\n\tmargin-top: -6px;\n\twidth: 12px;\n\theight: 12px;\n\t-webkit-transform: rotate(45deg);\n\t-ms-transform: rotate(45deg);\n\ttransform: rotate(45deg);\n"]);
1184
-
1185
- _templateObject2 = function _templateObject2() {
1186
- return data;
1187
- };
1188
-
1189
- return data;
1190
- }
1191
-
1192
- function _templateObject() {
1193
- var data = _taggedTemplateLiteralLoose(["\n\theight: 24px;\n\twidth: auto;\n\tbackground-color: #fff;\n\tborder-radius: 2px;\n\tcolor: #222;\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.15);\n\tpadding: 3px 6px;\n\tfont-size: 15px;\n"]);
1194
-
1195
- _templateObject = function _templateObject() {
1196
- return data;
1197
- };
1198
-
1199
- return data;
1200
- }
1201
- var MapPin = styled('div')(_templateObject());
1202
- var MapPinArrow = styled('div')(_templateObject2());
1203
- var mapPinWrapper = css(_templateObject3());
1211
+ var _templateObject, _templateObject2, _templateObject3;
1212
+ var MapPin = styled('div')(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n\theight: 24px;\n\twidth: auto;\n\tbackground-color: #fff;\n\tborder-radius: 2px;\n\tcolor: #222;\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.15);\n\tpadding: 3px 6px;\n\tfont-size: 15px;\n"])));
1213
+ var MapPinArrow = styled('div')(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n\tborder-color: rgba(0, 0, 0, 0.2);\n\tborder-style: solid;\n\tborder-width: 0 1px 1px 0;\n\tmargin-left: -6px;\n\tbackground-color: #fff;\n\tmargin-top: -6px;\n\twidth: 12px;\n\theight: 12px;\n\t-webkit-transform: rotate(45deg);\n\t-ms-transform: rotate(45deg);\n\ttransform: rotate(45deg);\n"])));
1214
+ var mapPinWrapper = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n\t&:hover,\n\t&:focus {\n\t\tz-index: 200;\n\t}\n"])));
1204
1215
 
1205
1216
  var recordResultClick$1 = Actions.recordResultClick;
1206
1217
  var GoogleMapMarker = {
@@ -1209,54 +1220,62 @@ var GoogleMapMarker = {
1209
1220
  index: VueTypes.number,
1210
1221
  marker: VueTypes.object.isRequired,
1211
1222
  getPosition: VueTypes.func.isRequired,
1212
- markerOnTop: VueTypes.string,
1213
1223
  defaultPin: VueTypes.string,
1214
1224
  renderItem: VueTypes.func,
1215
- setMarkerOnTop: VueTypes.func.isRequired,
1216
1225
  setOpenMarkers: VueTypes.func.isRequired,
1217
1226
  handlePreserveCenter: VueTypes.func.isRequired,
1218
1227
  autoClosePopover: VueTypes.bool,
1219
1228
  openMarkers: VueTypes.object,
1220
- renderPopover: VueTypes.func
1229
+ renderPopover: VueTypes.func,
1230
+ highlightMarkerOnHover: VueTypes.bool
1231
+ },
1232
+ data: function data() {
1233
+ return {
1234
+ zIndex: 0
1235
+ };
1221
1236
  },
1222
1237
  methods: {
1223
1238
  increaseMarkerZIndex: function increaseMarkerZIndex() {
1224
- var _this$$props = this.$props,
1225
- handleTopMarker = _this$$props.setMarkerOnTop,
1226
- handlePreserveCenter = _this$$props.handlePreserveCenter,
1227
- marker = _this$$props.marker;
1228
- handleTopMarker(marker._id);
1239
+ var handlePreserveCenter = this.$props.handlePreserveCenter;
1240
+
1241
+ if (this.highlightMarkerOnHover) {
1242
+ this.zIndex += 1;
1243
+ }
1244
+
1229
1245
  handlePreserveCenter(true);
1230
1246
  },
1231
1247
  removeMarkerZIndex: function removeMarkerZIndex() {
1232
- var _this$$props2 = this.$props,
1233
- handleTopMarker = _this$$props2.setMarkerOnTop,
1234
- handlePreserveCenter = _this$$props2.handlePreserveCenter;
1235
- handleTopMarker(null);
1248
+ var handlePreserveCenter = this.$props.handlePreserveCenter;
1249
+
1250
+ if (this.highlightMarkerOnHover) {
1251
+ this.zIndex -= 1;
1252
+ }
1253
+
1236
1254
  handlePreserveCenter(true);
1237
1255
  },
1238
1256
  openMarker: function openMarker() {
1239
1257
  var _ref, _extends2;
1240
1258
 
1241
- var _this$$props3 = this.$props,
1242
- handleOpenMarkers = _this$$props3.setOpenMarkers,
1243
- openMarkers = _this$$props3.openMarkers,
1244
- marker = _this$$props3.marker,
1245
- autoClosePopover = _this$$props3.autoClosePopover,
1246
- handlePreserveCenter = _this$$props3.handlePreserveCenter;
1259
+ var _this$$props = this.$props,
1260
+ handleOpenMarkers = _this$$props.setOpenMarkers,
1261
+ openMarkers = _this$$props.openMarkers,
1262
+ marker = _this$$props.marker,
1263
+ autoClosePopover = _this$$props.autoClosePopover,
1264
+ handlePreserveCenter = _this$$props.handlePreserveCenter;
1247
1265
  var id = marker._id;
1248
- var newOpenMarkers = autoClosePopover ? (_ref = {}, _ref[id] = true, _ref) : _extends(_extends({}, openMarkers), {}, (_extends2 = {}, _extends2[id] = true, _extends2));
1266
+ var newOpenMarkers = autoClosePopover ? (_ref = {}, _ref[id] = true, _ref) : _extends({}, openMarkers, (_extends2 = {}, _extends2[id] = true, _extends2));
1249
1267
  handleOpenMarkers(newOpenMarkers);
1250
1268
  handlePreserveCenter(true);
1251
1269
  this.triggerAnalytics();
1270
+ this.$emit('open-marker-popover', marker);
1252
1271
  },
1253
1272
  closeMarker: function closeMarker() {
1254
- var _this$$props4 = this.$props,
1255
- handleOpenMarkers = _this$$props4.setOpenMarkers,
1256
- marker = _this$$props4.marker,
1257
- autoClosePopover = _this$$props4.autoClosePopover,
1258
- handlePreserveCenter = _this$$props4.handlePreserveCenter,
1259
- openMarkers = _this$$props4.openMarkers;
1273
+ var _this$$props2 = this.$props,
1274
+ handleOpenMarkers = _this$$props2.setOpenMarkers,
1275
+ marker = _this$$props2.marker,
1276
+ autoClosePopover = _this$$props2.autoClosePopover,
1277
+ handlePreserveCenter = _this$$props2.handlePreserveCenter,
1278
+ openMarkers = _this$$props2.openMarkers;
1260
1279
  var id = marker._id;
1261
1280
 
1262
1281
  var del = openMarkers[id],
@@ -1265,6 +1284,7 @@ var GoogleMapMarker = {
1265
1284
  var newOpenMarkers = autoClosePopover ? {} : activeMarkers;
1266
1285
  handleOpenMarkers(newOpenMarkers);
1267
1286
  handlePreserveCenter(true);
1287
+ this.$emit('close-marker-popover', marker);
1268
1288
  },
1269
1289
  triggerAnalytics: function triggerAnalytics() {
1270
1290
  this.recordResultClick(this.index, this.marker._id);
@@ -1278,10 +1298,10 @@ var GoogleMapMarker = {
1278
1298
 
1279
1299
  var h = this.$createElement;
1280
1300
  var additionalProps = {};
1281
- var _this$$props5 = this.$props,
1282
- getPosition = _this$$props5.getPosition,
1283
- renderPopover = _this$$props5.renderPopover,
1284
- openMarkers = _this$$props5.openMarkers;
1301
+ var _this$$props3 = this.$props,
1302
+ getPosition = _this$$props3.getPosition,
1303
+ _renderPopover = _this$$props3.renderPopover,
1304
+ openMarkers = _this$$props3.openMarkers;
1285
1305
 
1286
1306
  if (includeExternalSettings) {
1287
1307
  // to render pop-over correctly with MarkerWithLabel
@@ -1294,19 +1314,32 @@ var GoogleMapMarker = {
1294
1314
  }
1295
1315
 
1296
1316
  if (item._id in openMarkers) {
1297
- return h(InfoWindow, {
1298
- "attrs": {
1299
- "zIndex": 500,
1300
- "position": additionalProps.position,
1301
- "options": additionalProps.defaultOptions
1302
- },
1317
+ return h(InfoWindowWrapper, {
1303
1318
  "key": item._id + "-InfoWindow",
1304
- "on": {
1305
- "closeclick": function closeclick() {
1306
- return _this.closeMarker();
1319
+ "attrs": {
1320
+ "id": item._id,
1321
+ "renderPopover": function renderPopover(_handleClose) {
1322
+ return _renderPopover({
1323
+ item: item,
1324
+ handleClose: function handleClose() {
1325
+ _handleClose();
1326
+
1327
+ _this.closeMarker();
1328
+ }
1329
+ });
1330
+ },
1331
+ "infoWindowProps": {
1332
+ zIndex: 500,
1333
+ position: additionalProps.position,
1334
+ options: additionalProps.defaultOptions
1335
+ },
1336
+ "events": {
1337
+ closeclick: function closeclick() {
1338
+ return _this.closeMarker();
1339
+ }
1307
1340
  }
1308
1341
  }
1309
- }, [h("div", [renderPopover(item)])]);
1342
+ });
1310
1343
  }
1311
1344
 
1312
1345
  return null;
@@ -1316,20 +1349,17 @@ var GoogleMapMarker = {
1316
1349
  var _this2 = this;
1317
1350
 
1318
1351
  var h = arguments[0];
1319
- var _this$$props6 = this.$props,
1320
- getPosition = _this$$props6.getPosition,
1321
- renderItem = _this$$props6.renderItem,
1322
- defaultPin = _this$$props6.defaultPin,
1323
- autoClosePopover = _this$$props6.autoClosePopover,
1324
- handlePreserveCenter = _this$$props6.handlePreserveCenter,
1325
- renderPopover = _this$$props6.renderPopover,
1326
- customMarkerProps = _this$$props6.markerProps,
1327
- marker = _this$$props6.marker,
1328
- markerOnTop = _this$$props6.markerOnTop;
1352
+ var _this$$props4 = this.$props,
1353
+ getPosition = _this$$props4.getPosition,
1354
+ renderItem = _this$$props4.renderItem,
1355
+ defaultPin = _this$$props4.defaultPin,
1356
+ renderPopover = _this$$props4.renderPopover,
1357
+ customMarkerProps = _this$$props4.markerProps,
1358
+ marker = _this$$props4.marker;
1329
1359
  var markerProps = {};
1330
1360
 
1331
- if (markerOnTop === marker._id) {
1332
- markerProps.zIndex = window.google.maps.Marker.MAX_ZINDEX + 1;
1361
+ if (this.zIndex) {
1362
+ markerProps.zIndex = window.google.maps.Marker.MAX_ZINDEX + this.zIndex;
1333
1363
  }
1334
1364
 
1335
1365
  if (renderItem) {
@@ -1339,12 +1369,11 @@ var GoogleMapMarker = {
1339
1369
  return h(MarkerWithLabel, {
1340
1370
  "key": marker._id,
1341
1371
  "attrs": {
1372
+ "metaData": marker,
1342
1373
  "marker": getPosition(marker),
1343
1374
  "labelAnchor": new window.google.maps.Point(0, 30),
1344
1375
  "handleMouseOver": this.increaseMarkerZIndex,
1345
- "handleFocus": this.increaseMarkerZIndex,
1346
1376
  "handleMouseOut": this.removeMarkerZIndex,
1347
- "handleBlur": this.removeMarkerZIndex,
1348
1377
  "handleClick": this.openMarker,
1349
1378
  "zIndex": markerProps.zIndex,
1350
1379
  "renderMarker": function renderMarker() {
@@ -1365,12 +1394,11 @@ var GoogleMapMarker = {
1365
1394
  return h(MarkerWithLabel, {
1366
1395
  "key": marker._id,
1367
1396
  "attrs": {
1397
+ "metaData": marker,
1368
1398
  "marker": getPosition(marker),
1369
1399
  "handleClick": this.openMarker,
1370
1400
  "handleMouseOver": this.increaseMarkerZIndex,
1371
- "handleFocus": this.increaseMarkerZIndex,
1372
1401
  "handleMouseOut": this.removeMarkerZIndex,
1373
- "handleBlur": this.removeMarkerZIndex,
1374
1402
  "zIndex": markerProps.zIndex,
1375
1403
  "renderMarker": function renderMarker() {
1376
1404
  return h("div", {
@@ -1394,16 +1422,17 @@ var GoogleMapMarker = {
1394
1422
  "attrs": {
1395
1423
  "icon": markerProps.icon,
1396
1424
  "zIndex": markerProps.zIndex,
1397
- "position": getPosition(marker)
1425
+ "position": getPosition(marker),
1426
+ "options": {
1427
+ metaData: marker
1428
+ }
1398
1429
  },
1399
1430
  "on": {
1400
1431
  "click": function click() {
1401
- return _this2.openMarker(marker._id, autoClosePopover || false, handlePreserveCenter);
1432
+ return _this2.openMarker();
1402
1433
  },
1403
1434
  "mouseover": this.increaseMarkerZIndex,
1404
- "focus": this.increaseMarkerZIndex,
1405
- "mouseout": this.removeMarkerZIndex,
1406
- "blur": this.removeMarkerZIndex
1435
+ "mouseout": this.removeMarkerZIndex
1407
1436
  },
1408
1437
  "props": _extends({}, customMarkerProps)
1409
1438
  }, [renderPopover ? this.renderPopoverClick(marker) : null]);
@@ -1422,34 +1451,60 @@ var GoogleMapMarkers = {
1422
1451
  resultsToRender: VueTypes.array,
1423
1452
  getPosition: VueTypes.func,
1424
1453
  renderItem: VueTypes.func,
1454
+ renderClusterPopover: VueTypes.func,
1425
1455
  defaultPin: VueTypes.string,
1426
1456
  autoClosePopover: VueTypes.bool,
1427
1457
  handlePreserveCenter: VueTypes.func,
1428
1458
  renderPopover: VueTypes.func,
1429
1459
  markerProps: VueTypes.object,
1430
- showMarkerClusters: VueTypes.bool
1460
+ clusterProps: VueTypes.object,
1461
+ showMarkerClusters: VueTypes.bool,
1462
+ highlightMarkerOnHover: VueTypes.bool
1431
1463
  },
1432
1464
  data: function data() {
1433
1465
  return {
1434
- markerOnTop: null,
1435
- openMarkers: {}
1466
+ openMarkers: {},
1467
+ clickedCluster: null,
1468
+ clusterMarkers: []
1436
1469
  };
1437
1470
  },
1438
1471
  methods: {
1439
- setMarkerOnTop: function setMarkerOnTop(markerOnTop) {
1440
- this.markerOnTop = markerOnTop;
1441
- },
1442
1472
  setOpenMarkers: function setOpenMarkers(openMarkers) {
1443
1473
  this.openMarkers = openMarkers;
1474
+ },
1475
+ getClusterMarkers: function getClusterMarkers() {
1476
+ if (this.clickedCluster && Array.isArray(this.clickedCluster.getMarkers())) {
1477
+ return this.clickedCluster.getMarkers().map(function (marker) {
1478
+ return marker.metaData;
1479
+ });
1480
+ }
1481
+
1482
+ return [];
1483
+ },
1484
+ getAdditionalProps: function getAdditionalProps() {
1485
+ return {
1486
+ position: {
1487
+ lat: this.clickedCluster.getCenter().lat(),
1488
+ lng: this.clickedCluster.getCenter().lng()
1489
+ },
1490
+ defaultOptions: {
1491
+ pixelOffset: new window.google.maps.Size(0, -30)
1492
+ }
1493
+ };
1494
+ },
1495
+ closeMarker: function closeMarker() {
1496
+ this.clickedCluster = null;
1497
+ this.clusterMarkers = [];
1498
+ this.$emit('close-cluster-popover');
1444
1499
  }
1445
1500
  },
1446
1501
  render: function render() {
1502
+ var _this = this;
1503
+
1447
1504
  var h = arguments[0];
1448
1505
  var resultsToRender = this.$props.resultsToRender;
1449
- var markerOnTop = this.markerOnTop,
1450
- openMarkers = this.openMarkers;
1506
+ var openMarkers = this.openMarkers;
1451
1507
  var markerProps = {
1452
- markerOnTop: markerOnTop,
1453
1508
  openMarkers: openMarkers,
1454
1509
  setMarkerOnTop: this.setMarkerOnTop,
1455
1510
  setOpenMarkers: this.setOpenMarkers,
@@ -1460,19 +1515,55 @@ var GoogleMapMarkers = {
1460
1515
  handlePreserveCenter: this.handlePreserveCenter,
1461
1516
  renderPopover: this.renderPopover,
1462
1517
  markerProps: this.markerProps,
1463
- showMarkerClusters: this.showMarkerClusters
1518
+ showMarkerClusters: this.showMarkerClusters,
1519
+ highlightMarkerOnHover: this.highlightMarkerOnHover
1464
1520
  };
1465
1521
 
1466
1522
  if (this.showMarkerClusters) {
1467
- return h(GmapCluster, [resultsToRender.map(function (marker, index) {
1523
+ return h("div", [h(GmapCluster, {
1524
+ "props": _extends({}, this.clusterProps),
1525
+ "on": {
1526
+ "click": function click(cluster) {
1527
+ _this.clickedCluster = cluster;
1528
+ _this.clusterMarkers = _this.getClusterMarkers();
1529
+
1530
+ _this.$emit('open-cluster-popover', _this.clusterMarkers);
1531
+ }
1532
+ },
1533
+ "ref": "clusterRef"
1534
+ }, [resultsToRender.map(function (marker, index) {
1468
1535
  return h(GoogleMapMarker$1, {
1469
1536
  "attrs": {
1470
1537
  "index": index,
1471
1538
  "marker": marker
1472
1539
  },
1473
- "props": _extends({}, markerProps)
1540
+ "props": _extends({}, markerProps),
1541
+ "on": _extends({}, _this.$listeners)
1474
1542
  });
1475
- })]);
1543
+ })]), this.clickedCluster && this.renderClusterPopover ? h(InfoWindowWrapper, {
1544
+ "attrs": {
1545
+ "id": "cluster",
1546
+ "infoWindowProps": {
1547
+ zIndex: 500,
1548
+ position: this.getAdditionalProps().position,
1549
+ options: this.getAdditionalProps().defaultOptions
1550
+ },
1551
+ "renderPopover": function renderPopover(_handleClose) {
1552
+ return _this.renderClusterPopover({
1553
+ markers: _this.clusterMarkers,
1554
+ cluster: _this.clickedCluster,
1555
+ handleClose: function handleClose() {
1556
+ _handleClose();
1557
+
1558
+ _this.closeMarker();
1559
+ }
1560
+ });
1561
+ },
1562
+ "events": {
1563
+ closeclick: this.closeMarker
1564
+ }
1565
+ }
1566
+ }) : null]);
1476
1567
  }
1477
1568
 
1478
1569
  return h("div", [resultsToRender.map(function (marker, index) {
@@ -1481,7 +1572,8 @@ var GoogleMapMarkers = {
1481
1572
  "index": index,
1482
1573
  "marker": marker
1483
1574
  },
1484
- "props": _extends({}, markerProps)
1575
+ "props": _extends({}, markerProps),
1576
+ "on": _extends({}, _this.$listeners)
1485
1577
  });
1486
1578
  })]);
1487
1579
  }
@@ -1493,19 +1585,22 @@ var ReactiveGoogleMap = {
1493
1585
  className: types.string,
1494
1586
  componentId: types.stringRequired,
1495
1587
  dataField: types.stringRequired,
1588
+ defaultQuery: VueTypes.func,
1496
1589
  loader: types.title,
1497
1590
  defaultZoom: VueTypes.number.def(13),
1498
1591
  react: types.react,
1499
1592
  size: types.number,
1500
1593
  sortBy: types.sortBy,
1501
- URLParams: types.bool,
1594
+ URLParams: VueTypes.bool,
1502
1595
  mapProps: VueTypes.object,
1503
1596
  showMarkers: VueTypes.bool.def(true),
1504
1597
  showMarkerClusters: VueTypes.bool.def(false),
1505
1598
  searchAsMove: VueTypes.bool.def(false),
1506
- markerProps: types.props,
1599
+ searchAsMoveLabel: VueTypes.string,
1600
+ markerProps: VueTypes.object,
1601
+ clusterProps: VueTypes.object,
1507
1602
  renderItem: VueTypes.func,
1508
- showSearchAsMove: types.bool.def(true),
1603
+ showSearchAsMove: VueTypes.bool.def(true),
1509
1604
  autoClosePopover: VueTypes.bool,
1510
1605
  pagination: VueTypes.bool,
1511
1606
  defaultPin: VueTypes.string,
@@ -1514,7 +1609,9 @@ var ReactiveGoogleMap = {
1514
1609
  center: types.location,
1515
1610
  defaultRadius: types.number,
1516
1611
  unit: types.string,
1517
- pages: VueTypes.number.def(5)
1612
+ pages: VueTypes.number.def(5),
1613
+ calculateMarkers: VueTypes.func,
1614
+ highlightMarkerOnHover: VueTypes.bool.def(true)
1518
1615
  },
1519
1616
  methods: {
1520
1617
  renderMap: function renderMap(_ref) {
@@ -1529,9 +1626,7 @@ var ReactiveGoogleMap = {
1529
1626
  renderSearchAsMove = _ref.renderSearchAsMove,
1530
1627
  handlePreserveCenter = _ref.handlePreserveCenter,
1531
1628
  getPosition = _ref.getPosition,
1532
- markerProps = _ref.markerProps,
1533
1629
  autoClosePopover = _ref.autoClosePopover,
1534
- renderPopover = _ref.renderPopover,
1535
1630
  defaultPin = _ref.defaultPin;
1536
1631
  var h = this.$createElement;
1537
1632
  var style = {
@@ -1564,8 +1659,10 @@ var ReactiveGoogleMap = {
1564
1659
  "attrs": {
1565
1660
  "resultsToRender": resultsToRender,
1566
1661
  "getPosition": getPosition,
1567
- "markerProps": markerProps,
1662
+ "markerProps": this.markerProps,
1663
+ "clusterProps": this.clusterProps,
1568
1664
  "handlePreserveCenter": handlePreserveCenter,
1665
+ "highlightMarkerOnHover": this.highlightMarkerOnHover,
1569
1666
  "renderItem": this.$scopedSlots.renderItem ? function () {
1570
1667
  return {
1571
1668
  custom: _this.$scopedSlots.renderItem
@@ -1573,9 +1670,11 @@ var ReactiveGoogleMap = {
1573
1670
  } : this.renderItem,
1574
1671
  "defaultPin": defaultPin,
1575
1672
  "autoClosePopover": autoClosePopover,
1576
- "renderPopover": renderPopover,
1673
+ "renderPopover": this.$scopedSlots.renderPopover,
1674
+ "renderClusterPopover": this.$scopedSlots.renderClusterPopover,
1577
1675
  "showMarkerClusters": this.showMarkerClusters
1578
- }
1676
+ },
1677
+ "on": _extends({}, this.$listeners)
1579
1678
  }) : null]), renderSearchAsMove()]);
1580
1679
  },
1581
1680
  getMapRef: function getMapRef() {
@@ -1592,8 +1691,6 @@ var ReactiveGoogleMap = {
1592
1691
  }
1593
1692
  },
1594
1693
  render: function render() {
1595
- var _this3 = this;
1596
-
1597
1694
  var h = arguments[0];
1598
1695
  return h(RMConnected, _mergeJSXProps([{
1599
1696
  "attrs": {
@@ -1610,31 +1707,20 @@ var ReactiveGoogleMap = {
1610
1707
  "uRLParams": this.URLParams,
1611
1708
  "defaultSearchAsMove": this.searchAsMove,
1612
1709
  "showSearchAsMove": this.showSearchAsMove,
1710
+ "searchAsMoveLabel": this.searchAsMoveLabel,
1613
1711
  "showMarkers": this.showMarkers,
1614
1712
  "markerProps": this.markerProps,
1615
1713
  "autoClosePopover": this.autoClosePopover,
1616
1714
  "defaultPin": this.defaultPin,
1617
- "renderPopover": this.$scopedSlots.renderPopover ? function (item) {
1618
- return _this3.$scopedSlots.renderPopover(item);
1619
- } : null,
1715
+ "defaultQuery": this.defaultQuery,
1620
1716
  "autoCenter": this.autoCenter,
1621
1717
  "defaultCenter": this.defaultCenter,
1622
1718
  "defaultRadius": this.defaultRadius,
1623
1719
  "unit": this.unit,
1624
1720
  "pages": this.pages,
1625
1721
  "center": this.center,
1626
- "loader": this.loader
1627
- },
1628
- "on": {
1629
- "zoomChanged": function zoomChanged(zoom) {
1630
- _this3.$emit('zoom-changed', zoom);
1631
- },
1632
- "idle": function idle() {
1633
- _this3.$emit('idle');
1634
- },
1635
- "dragEnd": function dragEnd() {
1636
- _this3.$emit('drag-end');
1637
- }
1722
+ "loader": this.loader,
1723
+ "calculateMarkers": this.calculateMarkers
1638
1724
  }
1639
1725
  }, {
1640
1726
  scopedSlots: this.$scopedSlots,