@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
@@ -6,28 +6,28 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
6
6
 
7
7
  var configureStore = require('@appbaseio/reactivecore');
8
8
  var configureStore__default = _interopDefault(configureStore);
9
- var _rollupPluginBabelHelpers = require('./_rollupPluginBabelHelpers-280a574c.js');
9
+ var _rollupPluginBabelHelpers = require('./_rollupPluginBabelHelpers-4abdbfff.js');
10
10
  var VueTypes = _interopDefault(require('vue-types'));
11
11
  var constants = require('@appbaseio/reactivecore/lib/utils/constants');
12
12
  require('emotion');
13
13
  var styled = require('@appbaseio/vue-emotion');
14
14
  var styled__default = _interopDefault(styled);
15
15
  require('polished');
16
- require('./Button-78d8bc26.js');
17
- var vueTypes = require('./vueTypes-c21f265b.js');
18
- var Pagination = require('./Pagination-91df3b77.js');
16
+ require('./Button-d2f1aeda.js');
17
+ var vueTypes = require('./vueTypes-6de9d2a9.js');
18
+ var Pagination = require('./Pagination-1b2320a7.js');
19
19
  require('@appbaseio/reactivecore/lib/utils/transform');
20
20
  require('redux');
21
- var index = require('./index-e0583d76.js');
22
- var ComponentWrapper = require('./ComponentWrapper-5a0a8849.js');
21
+ var index = require('./index-2a8358cd.js');
22
+ var ComponentWrapper = require('./ComponentWrapper-ab813390.js');
23
23
  var _mergeJSXProps = _interopDefault(require('@vue/babel-helper-vue-jsx-merge-props'));
24
- var FormControlList = require('./FormControlList-08dfb28e.js');
24
+ var FormControlList = require('./FormControlList-73497794.js');
25
25
  var GmapMapFull = require('gmap-vue');
26
26
  var Map = _interopDefault(require('gmap-vue/dist/components-implementation/map'));
27
27
  var geohash = _interopDefault(require('ngeohash'));
28
28
  var GmapCluster = _interopDefault(require('gmap-vue/dist/components/cluster'));
29
- var Marker = _interopDefault(require('gmap-vue/dist/components/marker'));
30
29
  var InfoWindow = _interopDefault(require('gmap-vue/dist/components-implementation/info-window'));
30
+ var Marker = _interopDefault(require('gmap-vue/dist/components/marker'));
31
31
  var MapElementMixin = _interopDefault(require('gmap-vue/dist/mixins/map-element'));
32
32
 
33
33
  var setStreaming = configureStore.Actions.setStreaming,
@@ -76,7 +76,7 @@ function withDistinctLat(loc, count) {
76
76
 
77
77
  var suffix = 1 / Math.pow(10, noiseFactor) * count;
78
78
 
79
- var location = _rollupPluginBabelHelpers._extends(_rollupPluginBabelHelpers._extends({}, loc), {}, {
79
+ var location = _rollupPluginBabelHelpers._extends({}, loc, {
80
80
  lat: parseFloat((loc.lat + suffix).toFixed(length))
81
81
  });
82
82
 
@@ -128,14 +128,13 @@ var ReactiveMap = {
128
128
  react: vueTypes.types.react,
129
129
  size: vueTypes.types.number,
130
130
  sortBy: vueTypes.types.sortBy,
131
- URLParams: vueTypes.types.bool,
132
- autoCenter: vueTypes.types.bool,
131
+ URLParams: VueTypes.bool,
132
+ autoCenter: VueTypes.bool,
133
133
  getMapRef: VueTypes.func.isRequired,
134
134
  center: vueTypes.types.location,
135
135
  defaultCenter: vueTypes.types.location,
136
136
  defaultPin: vueTypes.types.string,
137
137
  defaultZoom: VueTypes.number.def(13),
138
- markerProps: vueTypes.types.props,
139
138
  defaultQuery: vueTypes.types.func,
140
139
  innerClass: vueTypes.types.style,
141
140
  loader: vueTypes.types.title,
@@ -144,19 +143,19 @@ var ReactiveMap = {
144
143
  renderError: vueTypes.types.title,
145
144
  pages: VueTypes.number.def(5),
146
145
  currentPage: VueTypes.number.def(0),
147
- pagination: vueTypes.types.bool,
148
- showMarkers: vueTypes.types.bool,
149
- defaultSearchAsMove: vueTypes.types.bool,
150
- showSearchAsMove: vueTypes.types.bool,
146
+ pagination: VueTypes.bool,
147
+ showMarkers: VueTypes.bool,
148
+ defaultSearchAsMove: VueTypes.bool,
149
+ showSearchAsMove: VueTypes.bool,
151
150
  defaultRadius: vueTypes.types.number,
152
151
  unit: vueTypes.types.string,
153
- autoClosePopover: vueTypes.types.bool,
152
+ autoClosePopover: VueTypes.bool,
154
153
  renderMap: VueTypes.func.isRequired,
155
154
  renderPopover: VueTypes.func,
156
- onDragEnd: vueTypes.types.func,
157
- onZoomChanged: vueTypes.types.func,
158
- onIdle: vueTypes.types.func
155
+ calculateMarkers: VueTypes.func,
156
+ searchAsMoveLabel: VueTypes.string.def('Search as I move the map')
159
157
  },
158
+ preserveCenter: false,
160
159
  data: function data() {
161
160
  var props = this.$props;
162
161
  var currentPageState = 0;
@@ -170,8 +169,8 @@ var ReactiveMap = {
170
169
  zoom: props.defaultZoom,
171
170
  searchAsMove: props.defaultSearchAsMove,
172
171
  currentPageState: currentPageState,
173
- preserveCenter: false,
174
- mapBoxBounds: null
172
+ mapBoxBounds: null,
173
+ markersData: null
175
174
  };
176
175
  return this.__state;
177
176
  },
@@ -183,7 +182,7 @@ var ReactiveMap = {
183
182
  var _this$getAllData = this.getAllData(),
184
183
  resultsToRender = _this$getAllData.resultsToRender;
185
184
 
186
- return _rollupPluginBabelHelpers._extends(_rollupPluginBabelHelpers._extends({}, getResultStats(this)), {}, {
185
+ return _rollupPluginBabelHelpers._extends({}, getResultStats(this), {
187
186
  currentPage: this.currentPageState,
188
187
  displayedResults: resultsToRender.length
189
188
  });
@@ -218,16 +217,19 @@ var ReactiveMap = {
218
217
  var queryOptions = getOptionsFromQuery(this.$defaultQuery);
219
218
 
220
219
  if (queryOptions) {
221
- options = _rollupPluginBabelHelpers._extends(_rollupPluginBabelHelpers._extends({}, options), getOptionsFromQuery(this.$defaultQuery));
220
+ options = _rollupPluginBabelHelpers._extends({}, options, getOptionsFromQuery(this.$defaultQuery));
222
221
  } // Update calculated default query in store
223
222
 
224
223
 
225
- this.setQueryOptions(this.$props.componentId, options, !query);
224
+ this.setQueryOptions(this.$props.componentId, options, false);
226
225
  var persistMapQuery = true;
227
226
  var forceExecute = true; // Update default query to include the geo bounding box query
228
227
 
229
228
  this.setDefaultQueryForRSAPI();
230
- this.props.setMapData(this.componentId, query, persistMapQuery, forceExecute);
229
+ var meta = {
230
+ mapBoxBounds: this.mapBoxBounds
231
+ };
232
+ this.setMapData(this.componentId, query, persistMapQuery, forceExecute, meta);
231
233
  this.currentPageState = 0;
232
234
  this.from = 0;
233
235
  }
@@ -258,7 +260,45 @@ var ReactiveMap = {
258
260
  }
259
261
  },
260
262
  rawData: function rawData(newVal, oldVal) {
263
+ var _this = this;
264
+
261
265
  if (!isEqual(newVal, oldVal)) {
266
+ var promotedResults = this.promotedResults,
267
+ hits = this.hits;
268
+ var results = parseHits(hits) || [];
269
+ var parsedPromotedResults = parseHits(promotedResults) || [];
270
+ var filteredResults = results;
271
+
272
+ if (parsedPromotedResults.length) {
273
+ var ids = parsedPromotedResults.map(function (item) {
274
+ return item._id;
275
+ }).filter(Boolean);
276
+
277
+ if (ids) {
278
+ filteredResults = filteredResults.filter(function (item) {
279
+ return !ids.includes(item._id);
280
+ });
281
+ }
282
+
283
+ filteredResults = [].concat(parsedPromotedResults, filteredResults);
284
+ }
285
+
286
+ filteredResults = filteredResults.filter(function (item) {
287
+ return !!item[_this.dataField];
288
+ }).map(function (item) {
289
+ var _extends2;
290
+
291
+ return _rollupPluginBabelHelpers._extends({}, item, (_extends2 = {}, _extends2[_this.dataField] = getLocationObject(item[_this.dataField]), _extends2));
292
+ });
293
+ this.filteredResults = this.addNoise(filteredResults);
294
+
295
+ if (this.calculateMarkers) {
296
+ this.markersData = this.calculateMarkers({
297
+ data: this.filteredResults,
298
+ rawData: this.rawData
299
+ }) || [];
300
+ }
301
+
262
302
  this.$emit('data', this.getData());
263
303
  }
264
304
  },
@@ -296,18 +336,18 @@ var ReactiveMap = {
296
336
  return this.parseLocation(MAP_CENTER);
297
337
  },
298
338
  addNoise: function addNoise(hits) {
299
- var _this = this;
339
+ var _this2 = this;
300
340
 
301
341
  var hitMap = {};
302
342
  var updatedHits = [];
303
343
  hits.forEach(function (item) {
304
344
  var updatedItem = _rollupPluginBabelHelpers._extends({}, item);
305
345
 
306
- var location = _this.parseLocation(item[_this.dataField]);
346
+ var location = _this2.parseLocation(item[_this2.dataField]);
307
347
 
308
348
  var key = JSON.stringify(location);
309
349
  var count = hitMap[key] || 0;
310
- updatedItem[_this.dataField] = count ? withDistinctLat(location, count) : location;
350
+ updatedItem[_this2.dataField] = count ? withDistinctLat(location, count) : location;
311
351
  updatedHits = [].concat(updatedHits, [updatedItem]);
312
352
  hitMap[key] = count + 1;
313
353
  });
@@ -321,10 +361,10 @@ var ReactiveMap = {
321
361
  return null;
322
362
  },
323
363
  getHitsCenter: function getHitsCenter(hits) {
324
- var _this2 = this;
364
+ var _this3 = this;
325
365
 
326
366
  var data = hits.map(function (hit) {
327
- return hit[_this2.dataField];
367
+ return hit[_this3.dataField];
328
368
  });
329
369
 
330
370
  if (data.length) {
@@ -365,7 +405,7 @@ var ReactiveMap = {
365
405
  return false;
366
406
  },
367
407
  getCenter: function getCenter(hits) {
368
- var _this3 = this;
408
+ var _this4 = this;
369
409
 
370
410
  if (this.center) {
371
411
  return this.parseLocation(this.center);
@@ -373,10 +413,10 @@ var ReactiveMap = {
373
413
 
374
414
  var mapRef = this.getMapRef();
375
415
 
376
- if (mapRef && typeof mapRef.getCenter === 'function' && this.preserveCenter) {
416
+ if (mapRef && typeof mapRef.getCenter === 'function' && this.$options.preserveCenter) {
377
417
  var currentCenter = mapRef.getCenter();
378
418
  setTimeout(function () {
379
- _this3.preserveCenter = false;
419
+ _this4.$options.preserveCenter = false;
380
420
  }, 100);
381
421
  return this.parseLocation({
382
422
  lat: currentCenter.lat(),
@@ -396,27 +436,31 @@ var ReactiveMap = {
396
436
  },
397
437
  handleZoomChange: function handleZoomChange(zoom) {
398
438
  if (zoom) {
439
+ var prevZoom = this.zoom;
440
+
399
441
  if (this.searchAsMove) {
400
442
  this.zoom = zoom;
401
- this.preserveCenter = true;
443
+ this.$options.preserveCenter = true;
402
444
  this.setGeoQuery(true);
403
445
  } else {
404
446
  this.zoom = zoom;
405
447
  }
406
448
 
407
- if (this.onZoomChanged) this.onZoomChanged(zoom);
449
+ if (prevZoom !== zoom) {
450
+ this.$emit('zoom-changed', zoom);
451
+ }
408
452
  }
409
453
  },
410
454
  handleOnDragEnd: function handleOnDragEnd() {
411
455
  if (this.searchAsMove) {
412
- this.preserveCenter = true;
456
+ this.$options.preserveCenter = true;
413
457
  this.setGeoQuery(true);
414
458
  }
415
459
 
416
- if (this.onDragEnd) this.onDragEnd();
460
+ this.$emit('drag-end');
417
461
  },
418
462
  handlePreserveCenter: function handlePreserveCenter(preserveCenter) {
419
- this.preserveCenter = preserveCenter;
463
+ this.$options.preserveCenter = preserveCenter;
420
464
  },
421
465
  handleOnIdle: function handleOnIdle() {
422
466
  // only make the geo_bounding query if we have hits data
@@ -427,7 +471,7 @@ var ReactiveMap = {
427
471
  this.setGeoQuery(executeUpdate);
428
472
  }
429
473
 
430
- if (this.onIdle) this.onIdle();
474
+ this.$emit('idle');
431
475
  },
432
476
  setGeoQuery: function setGeoQuery(executeUpdate) {
433
477
  if (executeUpdate === void 0) {
@@ -456,7 +500,6 @@ var ReactiveMap = {
456
500
  defaultPin = this.defaultPin,
457
501
  renderPopover = this.renderPopover,
458
502
  autoClosePopover = this.autoClosePopover,
459
- markerProps = this.markerProps,
460
503
  renderItem = this.renderItem;
461
504
  return {
462
505
  resultsToRender: data,
@@ -469,17 +512,14 @@ var ReactiveMap = {
469
512
  renderPopover: renderPopover,
470
513
  autoClosePopover: autoClosePopover,
471
514
  renderSearchAsMove: this.renderSearchAsMove,
472
- markerProps: markerProps,
473
515
  handlePreserveCenter: this.handlePreserveCenter,
474
- preserveCenter: this.preserveCenter,
516
+ preserveCenter: this.$options.preserveCenter,
475
517
  handleOnDragEnd: this.handleOnDragEnd,
476
518
  handleOnIdle: this.handleOnIdle,
477
519
  handleZoomChange: this.handleZoomChange
478
520
  };
479
521
  },
480
522
  getAllData: function getAllData() {
481
- var _this4 = this;
482
-
483
523
  var size = this.size,
484
524
  promotedResults = this.promotedResults,
485
525
  customData = this.customData,
@@ -487,31 +527,13 @@ var ReactiveMap = {
487
527
  hits = this.hits;
488
528
  var results = parseHits(hits) || [];
489
529
  var parsedPromotedResults = parseHits(promotedResults) || [];
490
- var filteredResults = results;
491
530
  var base = currentPage * size;
531
+ var resultsToRender = this.filteredResults || [];
492
532
 
493
- if (parsedPromotedResults.length) {
494
- var ids = parsedPromotedResults.map(function (item) {
495
- return item._id;
496
- }).filter(Boolean);
497
-
498
- if (ids) {
499
- filteredResults = filteredResults.filter(function (item) {
500
- return !ids.includes(item._id);
501
- });
502
- }
503
-
504
- filteredResults = [].concat(parsedPromotedResults, filteredResults);
533
+ if (this.markersData) {
534
+ resultsToRender = this.markersData;
505
535
  }
506
536
 
507
- filteredResults = filteredResults.filter(function (item) {
508
- return !!item[_this4.dataField];
509
- }).map(function (item) {
510
- var _extends2;
511
-
512
- return _rollupPluginBabelHelpers._extends(_rollupPluginBabelHelpers._extends({}, item), {}, (_extends2 = {}, _extends2[_this4.dataField] = getLocationObject(item[_this4.dataField]), _extends2));
513
- });
514
- var resultsToRender = this.addNoise(filteredResults);
515
537
  return {
516
538
  results: results,
517
539
  resultsToRender: resultsToRender,
@@ -562,7 +584,7 @@ var ReactiveMap = {
562
584
  options.from = this.$data.from;
563
585
  this.from = value;
564
586
  this.currentPageState = page;
565
- this.loadMoreAction(this.componentId, _rollupPluginBabelHelpers._extends(_rollupPluginBabelHelpers._extends({}, options), {}, {
587
+ this.loadMoreAction(this.componentId, _rollupPluginBabelHelpers._extends({}, options, {
566
588
  from: value
567
589
  }), false);
568
590
 
@@ -574,29 +596,6 @@ var ReactiveMap = {
574
596
  setDefaultQueryForRSAPI: function setDefaultQueryForRSAPI() {
575
597
  if (this.defaultQuery && typeof this.defaultQuery === 'function') {
576
598
  var defaultQuery = this.defaultQuery();
577
-
578
- if (this.mapBoxBounds) {
579
- var _geo_bounding_box;
580
-
581
- var geoQuery = {
582
- geo_bounding_box: (_geo_bounding_box = {}, _geo_bounding_box[this.dataField] = this.mapBoxBounds, _geo_bounding_box)
583
- };
584
-
585
- var _defaultQuery = defaultQuery,
586
- query = _defaultQuery.query,
587
- options = _rollupPluginBabelHelpers._objectWithoutPropertiesLoose(_defaultQuery, ["query"]);
588
-
589
- if (query) {
590
- // adds defaultQuery's query to geo-query
591
- // to generate a map query
592
- defaultQuery = _rollupPluginBabelHelpers._extends({
593
- query: {
594
- must: [geoQuery, query]
595
- }
596
- }, options);
597
- }
598
- }
599
-
600
599
  this.setDefaultQuery(this.componentId, defaultQuery);
601
600
  }
602
601
  },
@@ -620,7 +619,7 @@ var ReactiveMap = {
620
619
  var west;
621
620
 
622
621
  if (mapBounds) {
623
- var _geo_bounding_box2;
622
+ var _geo_bounding_box;
624
623
 
625
624
  north = mapBounds.getNorthEast().lat();
626
625
  south = mapBounds.getSouthWest().lat();
@@ -632,7 +631,7 @@ var ReactiveMap = {
632
631
  };
633
632
  this.mapBoxBounds = boundingBoxCoordinates;
634
633
  var geoQuery = {
635
- geo_bounding_box: (_geo_bounding_box2 = {}, _geo_bounding_box2[this.dataField] = boundingBoxCoordinates, _geo_bounding_box2)
634
+ geo_bounding_box: (_geo_bounding_box = {}, _geo_bounding_box[this.dataField] = boundingBoxCoordinates, _geo_bounding_box)
636
635
  };
637
636
 
638
637
  if (this.$defaultQuery) {
@@ -675,7 +674,7 @@ var ReactiveMap = {
675
674
  var value = this.from + this.size;
676
675
  var options = getQueryOptions(this.$props);
677
676
  this.from = value;
678
- this.loadMoreAction(this.componentId, _rollupPluginBabelHelpers._extends(_rollupPluginBabelHelpers._extends({}, options), {}, {
677
+ this.loadMoreAction(this.componentId, _rollupPluginBabelHelpers._extends({}, options, {
679
678
  from: value
680
679
  }), true);
681
680
  }
@@ -703,13 +702,14 @@ var ReactiveMap = {
703
702
  base = _this$getAllData3.base;
704
703
 
705
704
  return results.map(function (result, index) {
706
- return _rollupPluginBabelHelpers._extends(_rollupPluginBabelHelpers._extends({}, result), {}, {
705
+ return _rollupPluginBabelHelpers._extends({}, result, {
707
706
  _click_id: base + index
708
707
  });
709
708
  });
710
709
  },
711
710
  toggleSearchAsMove: function toggleSearchAsMove() {
712
711
  this.searchAsMove = !this.searchAsMove;
712
+ this.$emit('search-as-move', this.searchAsMove);
713
713
  },
714
714
  renderErrorComponent: function renderErrorComponent() {
715
715
  var renderError = this.$scopedSlots.renderError || this.$props.renderError;
@@ -755,7 +755,7 @@ var ReactiveMap = {
755
755
  "className": getClassName(this.innerClass, 'label') || null,
756
756
  "for": this.$props.componentId + "-searchasmove"
757
757
  }
758
- }, ["Search as I move the map"])]);
758
+ }, [this.searchAsMoveLabel])]);
759
759
  }
760
760
 
761
761
  return null;
@@ -809,7 +809,7 @@ var ReactiveMap = {
809
809
 
810
810
  if (this.$props.defaultQuery) {
811
811
  this.$defaultQuery = this.$props.defaultQuery();
812
- options = _rollupPluginBabelHelpers._extends(_rollupPluginBabelHelpers._extends({}, options), getOptionsFromQuery(this.$defaultQuery)); // Override sort query with defaultQuery's sort if defined
812
+ options = _rollupPluginBabelHelpers._extends({}, options, getOptionsFromQuery(this.$defaultQuery)); // Override sort query with defaultQuery's sort if defined
813
813
 
814
814
  if (this.$defaultQuery.sort) {
815
815
  options.sort = this.$defaultQuery.sort;
@@ -823,7 +823,10 @@ var ReactiveMap = {
823
823
  var forceExecute = false; // Update default query for RS API
824
824
 
825
825
  this.setDefaultQueryForRSAPI();
826
- this.setMapData(this.componentId, this.$defaultQuery.query, persistMapQuery, forceExecute);
826
+ var meta = {
827
+ mapBoxBounds: this.mapBoxBounds
828
+ };
829
+ this.setMapData(this.componentId, this.$defaultQuery.query, persistMapQuery, forceExecute, meta);
827
830
  } else {
828
831
  // only apply geo-distance when defaultQuery prop is not set
829
832
  var query = this.getGeoDistanceQuery();
@@ -843,11 +846,11 @@ var ReactiveMap = {
843
846
 
844
847
  var center = this.center || this.defaultCenter;
845
848
  var coordinatesObject = this.getArrPosition(center);
846
- var meta = {
849
+ var _meta = {
847
850
  distance: this.defaultRadius,
848
851
  coordinates: coordinatesObject.lat + ", " + coordinatesObject.lon
849
852
  };
850
- this.setMapData(this.componentId, query, _persistMapQuery, _forceExecute, meta);
853
+ this.setMapData(this.componentId, query, _persistMapQuery, _forceExecute, _meta);
851
854
  }
852
855
  }
853
856
 
@@ -857,7 +860,7 @@ var ReactiveMap = {
857
860
  var h = arguments[0];
858
861
  var loader = this.$scopedSlots.loader || this.$props.loader;
859
862
  return h("div", {
860
- "style": _rollupPluginBabelHelpers._extends(_rollupPluginBabelHelpers._extends({}, style), this.$props.style),
863
+ "style": _rollupPluginBabelHelpers._extends({}, style, this.$props.style),
861
864
  "class": this.$props.className
862
865
  }, [this.renderErrorComponent(), this.isLoading && loader, this.hasCustomRender ? this.getComponent() : null, this.renderMap(this.getMapParams()), this.pagination ? this.renderPagination() : null]);
863
866
  }
@@ -901,9 +904,46 @@ ReactiveMap.install = function (Vue) {
901
904
 
902
905
  ReactiveMap.componentType = constants.componentTypes.reactiveMap;
903
906
 
907
+ var InfoWindowWrapper = {
908
+ name: 'InfoWindowWrapper',
909
+ props: {
910
+ id: VueTypes.string,
911
+ renderPopover: VueTypes.func,
912
+ infoWindowProps: VueTypes.object,
913
+ events: VueTypes.object
914
+ },
915
+ data: function data() {
916
+ return {
917
+ infoWindowRef: null
918
+ };
919
+ },
920
+ mounted: function mounted() {
921
+ this.infoWindowRef = this.$refs[this.id + "-Info-Window"];
922
+ },
923
+ methods: {
924
+ handleClose: function handleClose() {
925
+ this.infoWindowRef.$infoWindowObject.close();
926
+ }
927
+ },
928
+ render: function render() {
929
+ var h = arguments[0];
930
+ var renderPopover = this.renderPopover,
931
+ events = this.events;
932
+ return h(InfoWindow, {
933
+ "ref": this.id + "-Info-Window",
934
+ "props": _rollupPluginBabelHelpers._extends({}, this.infoWindowProps),
935
+ "on": _rollupPluginBabelHelpers._extends({}, events)
936
+ }, [h("div", [renderPopover(this.handleClose)])]);
937
+ }
938
+ };
939
+
904
940
  var MarkerWithLabel = {
905
941
  name: 'MarkerWithLabel',
906
942
  props: {
943
+ metaData: {
944
+ type: Object,
945
+ "default": undefined
946
+ },
907
947
  marker: {
908
948
  type: Object,
909
949
  "default": undefined
@@ -1003,6 +1043,7 @@ var MarkerWithLabel = {
1003
1043
  var _this3;
1004
1044
 
1005
1045
  _this3 = _window$google$maps$O.call(this) || this;
1046
+ _this3.metaData = self.metaData;
1006
1047
 
1007
1048
  _this3.setMap(map2);
1008
1049
 
@@ -1168,47 +1209,17 @@ var MarkerWithLabel = {
1168
1209
  },
1169
1210
  "on": {
1170
1211
  "mouseover": this.handleMouseOver,
1171
- "focus": this.handleFocus,
1172
1212
  "mouseout": this.handleMouseOut,
1173
- "blur": this.handleBlur,
1174
1213
  "click": this.handleClick
1175
1214
  }
1176
1215
  }, [this.renderMarker()]);
1177
1216
  }
1178
1217
  };
1179
1218
 
1180
- function _templateObject3() {
1181
- var data = _rollupPluginBabelHelpers._taggedTemplateLiteralLoose(["\n\t&:hover,\n\t&:focus {\n\t\tz-index: 200;\n\t}\n"]);
1182
-
1183
- _templateObject3 = function _templateObject3() {
1184
- return data;
1185
- };
1186
-
1187
- return data;
1188
- }
1189
-
1190
- function _templateObject2() {
1191
- var data = _rollupPluginBabelHelpers._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"]);
1192
-
1193
- _templateObject2 = function _templateObject2() {
1194
- return data;
1195
- };
1196
-
1197
- return data;
1198
- }
1199
-
1200
- function _templateObject() {
1201
- var data = _rollupPluginBabelHelpers._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"]);
1202
-
1203
- _templateObject = function _templateObject() {
1204
- return data;
1205
- };
1206
-
1207
- return data;
1208
- }
1209
- var MapPin = styled__default('div')(_templateObject());
1210
- var MapPinArrow = styled__default('div')(_templateObject2());
1211
- var mapPinWrapper = styled.css(_templateObject3());
1219
+ var _templateObject, _templateObject2, _templateObject3;
1220
+ var MapPin = styled__default('div')(_templateObject || (_templateObject = _rollupPluginBabelHelpers._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"])));
1221
+ var MapPinArrow = styled__default('div')(_templateObject2 || (_templateObject2 = _rollupPluginBabelHelpers._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"])));
1222
+ var mapPinWrapper = styled.css(_templateObject3 || (_templateObject3 = _rollupPluginBabelHelpers._taggedTemplateLiteralLoose(["\n\t&:hover,\n\t&:focus {\n\t\tz-index: 200;\n\t}\n"])));
1212
1223
 
1213
1224
  var recordResultClick$1 = configureStore.Actions.recordResultClick;
1214
1225
  var GoogleMapMarker = {
@@ -1217,54 +1228,62 @@ var GoogleMapMarker = {
1217
1228
  index: VueTypes.number,
1218
1229
  marker: VueTypes.object.isRequired,
1219
1230
  getPosition: VueTypes.func.isRequired,
1220
- markerOnTop: VueTypes.string,
1221
1231
  defaultPin: VueTypes.string,
1222
1232
  renderItem: VueTypes.func,
1223
- setMarkerOnTop: VueTypes.func.isRequired,
1224
1233
  setOpenMarkers: VueTypes.func.isRequired,
1225
1234
  handlePreserveCenter: VueTypes.func.isRequired,
1226
1235
  autoClosePopover: VueTypes.bool,
1227
1236
  openMarkers: VueTypes.object,
1228
- renderPopover: VueTypes.func
1237
+ renderPopover: VueTypes.func,
1238
+ highlightMarkerOnHover: VueTypes.bool
1239
+ },
1240
+ data: function data() {
1241
+ return {
1242
+ zIndex: 0
1243
+ };
1229
1244
  },
1230
1245
  methods: {
1231
1246
  increaseMarkerZIndex: function increaseMarkerZIndex() {
1232
- var _this$$props = this.$props,
1233
- handleTopMarker = _this$$props.setMarkerOnTop,
1234
- handlePreserveCenter = _this$$props.handlePreserveCenter,
1235
- marker = _this$$props.marker;
1236
- handleTopMarker(marker._id);
1247
+ var handlePreserveCenter = this.$props.handlePreserveCenter;
1248
+
1249
+ if (this.highlightMarkerOnHover) {
1250
+ this.zIndex += 1;
1251
+ }
1252
+
1237
1253
  handlePreserveCenter(true);
1238
1254
  },
1239
1255
  removeMarkerZIndex: function removeMarkerZIndex() {
1240
- var _this$$props2 = this.$props,
1241
- handleTopMarker = _this$$props2.setMarkerOnTop,
1242
- handlePreserveCenter = _this$$props2.handlePreserveCenter;
1243
- handleTopMarker(null);
1256
+ var handlePreserveCenter = this.$props.handlePreserveCenter;
1257
+
1258
+ if (this.highlightMarkerOnHover) {
1259
+ this.zIndex -= 1;
1260
+ }
1261
+
1244
1262
  handlePreserveCenter(true);
1245
1263
  },
1246
1264
  openMarker: function openMarker() {
1247
1265
  var _ref, _extends2;
1248
1266
 
1249
- var _this$$props3 = this.$props,
1250
- handleOpenMarkers = _this$$props3.setOpenMarkers,
1251
- openMarkers = _this$$props3.openMarkers,
1252
- marker = _this$$props3.marker,
1253
- autoClosePopover = _this$$props3.autoClosePopover,
1254
- handlePreserveCenter = _this$$props3.handlePreserveCenter;
1267
+ var _this$$props = this.$props,
1268
+ handleOpenMarkers = _this$$props.setOpenMarkers,
1269
+ openMarkers = _this$$props.openMarkers,
1270
+ marker = _this$$props.marker,
1271
+ autoClosePopover = _this$$props.autoClosePopover,
1272
+ handlePreserveCenter = _this$$props.handlePreserveCenter;
1255
1273
  var id = marker._id;
1256
- var newOpenMarkers = autoClosePopover ? (_ref = {}, _ref[id] = true, _ref) : _rollupPluginBabelHelpers._extends(_rollupPluginBabelHelpers._extends({}, openMarkers), {}, (_extends2 = {}, _extends2[id] = true, _extends2));
1274
+ var newOpenMarkers = autoClosePopover ? (_ref = {}, _ref[id] = true, _ref) : _rollupPluginBabelHelpers._extends({}, openMarkers, (_extends2 = {}, _extends2[id] = true, _extends2));
1257
1275
  handleOpenMarkers(newOpenMarkers);
1258
1276
  handlePreserveCenter(true);
1259
1277
  this.triggerAnalytics();
1278
+ this.$emit('open-marker-popover', marker);
1260
1279
  },
1261
1280
  closeMarker: function closeMarker() {
1262
- var _this$$props4 = this.$props,
1263
- handleOpenMarkers = _this$$props4.setOpenMarkers,
1264
- marker = _this$$props4.marker,
1265
- autoClosePopover = _this$$props4.autoClosePopover,
1266
- handlePreserveCenter = _this$$props4.handlePreserveCenter,
1267
- openMarkers = _this$$props4.openMarkers;
1281
+ var _this$$props2 = this.$props,
1282
+ handleOpenMarkers = _this$$props2.setOpenMarkers,
1283
+ marker = _this$$props2.marker,
1284
+ autoClosePopover = _this$$props2.autoClosePopover,
1285
+ handlePreserveCenter = _this$$props2.handlePreserveCenter,
1286
+ openMarkers = _this$$props2.openMarkers;
1268
1287
  var id = marker._id;
1269
1288
 
1270
1289
  var del = openMarkers[id],
@@ -1273,6 +1292,7 @@ var GoogleMapMarker = {
1273
1292
  var newOpenMarkers = autoClosePopover ? {} : activeMarkers;
1274
1293
  handleOpenMarkers(newOpenMarkers);
1275
1294
  handlePreserveCenter(true);
1295
+ this.$emit('close-marker-popover', marker);
1276
1296
  },
1277
1297
  triggerAnalytics: function triggerAnalytics() {
1278
1298
  this.recordResultClick(this.index, this.marker._id);
@@ -1286,10 +1306,10 @@ var GoogleMapMarker = {
1286
1306
 
1287
1307
  var h = this.$createElement;
1288
1308
  var additionalProps = {};
1289
- var _this$$props5 = this.$props,
1290
- getPosition = _this$$props5.getPosition,
1291
- renderPopover = _this$$props5.renderPopover,
1292
- openMarkers = _this$$props5.openMarkers;
1309
+ var _this$$props3 = this.$props,
1310
+ getPosition = _this$$props3.getPosition,
1311
+ _renderPopover = _this$$props3.renderPopover,
1312
+ openMarkers = _this$$props3.openMarkers;
1293
1313
 
1294
1314
  if (includeExternalSettings) {
1295
1315
  // to render pop-over correctly with MarkerWithLabel
@@ -1302,19 +1322,32 @@ var GoogleMapMarker = {
1302
1322
  }
1303
1323
 
1304
1324
  if (item._id in openMarkers) {
1305
- return h(InfoWindow, {
1306
- "attrs": {
1307
- "zIndex": 500,
1308
- "position": additionalProps.position,
1309
- "options": additionalProps.defaultOptions
1310
- },
1325
+ return h(InfoWindowWrapper, {
1311
1326
  "key": item._id + "-InfoWindow",
1312
- "on": {
1313
- "closeclick": function closeclick() {
1314
- return _this.closeMarker();
1327
+ "attrs": {
1328
+ "id": item._id,
1329
+ "renderPopover": function renderPopover(_handleClose) {
1330
+ return _renderPopover({
1331
+ item: item,
1332
+ handleClose: function handleClose() {
1333
+ _handleClose();
1334
+
1335
+ _this.closeMarker();
1336
+ }
1337
+ });
1338
+ },
1339
+ "infoWindowProps": {
1340
+ zIndex: 500,
1341
+ position: additionalProps.position,
1342
+ options: additionalProps.defaultOptions
1343
+ },
1344
+ "events": {
1345
+ closeclick: function closeclick() {
1346
+ return _this.closeMarker();
1347
+ }
1315
1348
  }
1316
1349
  }
1317
- }, [h("div", [renderPopover(item)])]);
1350
+ });
1318
1351
  }
1319
1352
 
1320
1353
  return null;
@@ -1324,20 +1357,17 @@ var GoogleMapMarker = {
1324
1357
  var _this2 = this;
1325
1358
 
1326
1359
  var h = arguments[0];
1327
- var _this$$props6 = this.$props,
1328
- getPosition = _this$$props6.getPosition,
1329
- renderItem = _this$$props6.renderItem,
1330
- defaultPin = _this$$props6.defaultPin,
1331
- autoClosePopover = _this$$props6.autoClosePopover,
1332
- handlePreserveCenter = _this$$props6.handlePreserveCenter,
1333
- renderPopover = _this$$props6.renderPopover,
1334
- customMarkerProps = _this$$props6.markerProps,
1335
- marker = _this$$props6.marker,
1336
- markerOnTop = _this$$props6.markerOnTop;
1360
+ var _this$$props4 = this.$props,
1361
+ getPosition = _this$$props4.getPosition,
1362
+ renderItem = _this$$props4.renderItem,
1363
+ defaultPin = _this$$props4.defaultPin,
1364
+ renderPopover = _this$$props4.renderPopover,
1365
+ customMarkerProps = _this$$props4.markerProps,
1366
+ marker = _this$$props4.marker;
1337
1367
  var markerProps = {};
1338
1368
 
1339
- if (markerOnTop === marker._id) {
1340
- markerProps.zIndex = window.google.maps.Marker.MAX_ZINDEX + 1;
1369
+ if (this.zIndex) {
1370
+ markerProps.zIndex = window.google.maps.Marker.MAX_ZINDEX + this.zIndex;
1341
1371
  }
1342
1372
 
1343
1373
  if (renderItem) {
@@ -1347,12 +1377,11 @@ var GoogleMapMarker = {
1347
1377
  return h(MarkerWithLabel, {
1348
1378
  "key": marker._id,
1349
1379
  "attrs": {
1380
+ "metaData": marker,
1350
1381
  "marker": getPosition(marker),
1351
1382
  "labelAnchor": new window.google.maps.Point(0, 30),
1352
1383
  "handleMouseOver": this.increaseMarkerZIndex,
1353
- "handleFocus": this.increaseMarkerZIndex,
1354
1384
  "handleMouseOut": this.removeMarkerZIndex,
1355
- "handleBlur": this.removeMarkerZIndex,
1356
1385
  "handleClick": this.openMarker,
1357
1386
  "zIndex": markerProps.zIndex,
1358
1387
  "renderMarker": function renderMarker() {
@@ -1373,12 +1402,11 @@ var GoogleMapMarker = {
1373
1402
  return h(MarkerWithLabel, {
1374
1403
  "key": marker._id,
1375
1404
  "attrs": {
1405
+ "metaData": marker,
1376
1406
  "marker": getPosition(marker),
1377
1407
  "handleClick": this.openMarker,
1378
1408
  "handleMouseOver": this.increaseMarkerZIndex,
1379
- "handleFocus": this.increaseMarkerZIndex,
1380
1409
  "handleMouseOut": this.removeMarkerZIndex,
1381
- "handleBlur": this.removeMarkerZIndex,
1382
1410
  "zIndex": markerProps.zIndex,
1383
1411
  "renderMarker": function renderMarker() {
1384
1412
  return h("div", {
@@ -1402,16 +1430,17 @@ var GoogleMapMarker = {
1402
1430
  "attrs": {
1403
1431
  "icon": markerProps.icon,
1404
1432
  "zIndex": markerProps.zIndex,
1405
- "position": getPosition(marker)
1433
+ "position": getPosition(marker),
1434
+ "options": {
1435
+ metaData: marker
1436
+ }
1406
1437
  },
1407
1438
  "on": {
1408
1439
  "click": function click() {
1409
- return _this2.openMarker(marker._id, autoClosePopover || false, handlePreserveCenter);
1440
+ return _this2.openMarker();
1410
1441
  },
1411
1442
  "mouseover": this.increaseMarkerZIndex,
1412
- "focus": this.increaseMarkerZIndex,
1413
- "mouseout": this.removeMarkerZIndex,
1414
- "blur": this.removeMarkerZIndex
1443
+ "mouseout": this.removeMarkerZIndex
1415
1444
  },
1416
1445
  "props": _rollupPluginBabelHelpers._extends({}, customMarkerProps)
1417
1446
  }, [renderPopover ? this.renderPopoverClick(marker) : null]);
@@ -1430,34 +1459,60 @@ var GoogleMapMarkers = {
1430
1459
  resultsToRender: VueTypes.array,
1431
1460
  getPosition: VueTypes.func,
1432
1461
  renderItem: VueTypes.func,
1462
+ renderClusterPopover: VueTypes.func,
1433
1463
  defaultPin: VueTypes.string,
1434
1464
  autoClosePopover: VueTypes.bool,
1435
1465
  handlePreserveCenter: VueTypes.func,
1436
1466
  renderPopover: VueTypes.func,
1437
1467
  markerProps: VueTypes.object,
1438
- showMarkerClusters: VueTypes.bool
1468
+ clusterProps: VueTypes.object,
1469
+ showMarkerClusters: VueTypes.bool,
1470
+ highlightMarkerOnHover: VueTypes.bool
1439
1471
  },
1440
1472
  data: function data() {
1441
1473
  return {
1442
- markerOnTop: null,
1443
- openMarkers: {}
1474
+ openMarkers: {},
1475
+ clickedCluster: null,
1476
+ clusterMarkers: []
1444
1477
  };
1445
1478
  },
1446
1479
  methods: {
1447
- setMarkerOnTop: function setMarkerOnTop(markerOnTop) {
1448
- this.markerOnTop = markerOnTop;
1449
- },
1450
1480
  setOpenMarkers: function setOpenMarkers(openMarkers) {
1451
1481
  this.openMarkers = openMarkers;
1482
+ },
1483
+ getClusterMarkers: function getClusterMarkers() {
1484
+ if (this.clickedCluster && Array.isArray(this.clickedCluster.getMarkers())) {
1485
+ return this.clickedCluster.getMarkers().map(function (marker) {
1486
+ return marker.metaData;
1487
+ });
1488
+ }
1489
+
1490
+ return [];
1491
+ },
1492
+ getAdditionalProps: function getAdditionalProps() {
1493
+ return {
1494
+ position: {
1495
+ lat: this.clickedCluster.getCenter().lat(),
1496
+ lng: this.clickedCluster.getCenter().lng()
1497
+ },
1498
+ defaultOptions: {
1499
+ pixelOffset: new window.google.maps.Size(0, -30)
1500
+ }
1501
+ };
1502
+ },
1503
+ closeMarker: function closeMarker() {
1504
+ this.clickedCluster = null;
1505
+ this.clusterMarkers = [];
1506
+ this.$emit('close-cluster-popover');
1452
1507
  }
1453
1508
  },
1454
1509
  render: function render() {
1510
+ var _this = this;
1511
+
1455
1512
  var h = arguments[0];
1456
1513
  var resultsToRender = this.$props.resultsToRender;
1457
- var markerOnTop = this.markerOnTop,
1458
- openMarkers = this.openMarkers;
1514
+ var openMarkers = this.openMarkers;
1459
1515
  var markerProps = {
1460
- markerOnTop: markerOnTop,
1461
1516
  openMarkers: openMarkers,
1462
1517
  setMarkerOnTop: this.setMarkerOnTop,
1463
1518
  setOpenMarkers: this.setOpenMarkers,
@@ -1468,19 +1523,55 @@ var GoogleMapMarkers = {
1468
1523
  handlePreserveCenter: this.handlePreserveCenter,
1469
1524
  renderPopover: this.renderPopover,
1470
1525
  markerProps: this.markerProps,
1471
- showMarkerClusters: this.showMarkerClusters
1526
+ showMarkerClusters: this.showMarkerClusters,
1527
+ highlightMarkerOnHover: this.highlightMarkerOnHover
1472
1528
  };
1473
1529
 
1474
1530
  if (this.showMarkerClusters) {
1475
- return h(GmapCluster, [resultsToRender.map(function (marker, index) {
1531
+ return h("div", [h(GmapCluster, {
1532
+ "props": _rollupPluginBabelHelpers._extends({}, this.clusterProps),
1533
+ "on": {
1534
+ "click": function click(cluster) {
1535
+ _this.clickedCluster = cluster;
1536
+ _this.clusterMarkers = _this.getClusterMarkers();
1537
+
1538
+ _this.$emit('open-cluster-popover', _this.clusterMarkers);
1539
+ }
1540
+ },
1541
+ "ref": "clusterRef"
1542
+ }, [resultsToRender.map(function (marker, index) {
1476
1543
  return h(GoogleMapMarker$1, {
1477
1544
  "attrs": {
1478
1545
  "index": index,
1479
1546
  "marker": marker
1480
1547
  },
1481
- "props": _rollupPluginBabelHelpers._extends({}, markerProps)
1548
+ "props": _rollupPluginBabelHelpers._extends({}, markerProps),
1549
+ "on": _rollupPluginBabelHelpers._extends({}, _this.$listeners)
1482
1550
  });
1483
- })]);
1551
+ })]), this.clickedCluster && this.renderClusterPopover ? h(InfoWindowWrapper, {
1552
+ "attrs": {
1553
+ "id": "cluster",
1554
+ "infoWindowProps": {
1555
+ zIndex: 500,
1556
+ position: this.getAdditionalProps().position,
1557
+ options: this.getAdditionalProps().defaultOptions
1558
+ },
1559
+ "renderPopover": function renderPopover(_handleClose) {
1560
+ return _this.renderClusterPopover({
1561
+ markers: _this.clusterMarkers,
1562
+ cluster: _this.clickedCluster,
1563
+ handleClose: function handleClose() {
1564
+ _handleClose();
1565
+
1566
+ _this.closeMarker();
1567
+ }
1568
+ });
1569
+ },
1570
+ "events": {
1571
+ closeclick: this.closeMarker
1572
+ }
1573
+ }
1574
+ }) : null]);
1484
1575
  }
1485
1576
 
1486
1577
  return h("div", [resultsToRender.map(function (marker, index) {
@@ -1489,7 +1580,8 @@ var GoogleMapMarkers = {
1489
1580
  "index": index,
1490
1581
  "marker": marker
1491
1582
  },
1492
- "props": _rollupPluginBabelHelpers._extends({}, markerProps)
1583
+ "props": _rollupPluginBabelHelpers._extends({}, markerProps),
1584
+ "on": _rollupPluginBabelHelpers._extends({}, _this.$listeners)
1493
1585
  });
1494
1586
  })]);
1495
1587
  }
@@ -1501,19 +1593,22 @@ var ReactiveGoogleMap = {
1501
1593
  className: vueTypes.types.string,
1502
1594
  componentId: vueTypes.types.stringRequired,
1503
1595
  dataField: vueTypes.types.stringRequired,
1596
+ defaultQuery: VueTypes.func,
1504
1597
  loader: vueTypes.types.title,
1505
1598
  defaultZoom: VueTypes.number.def(13),
1506
1599
  react: vueTypes.types.react,
1507
1600
  size: vueTypes.types.number,
1508
1601
  sortBy: vueTypes.types.sortBy,
1509
- URLParams: vueTypes.types.bool,
1602
+ URLParams: VueTypes.bool,
1510
1603
  mapProps: VueTypes.object,
1511
1604
  showMarkers: VueTypes.bool.def(true),
1512
1605
  showMarkerClusters: VueTypes.bool.def(false),
1513
1606
  searchAsMove: VueTypes.bool.def(false),
1514
- markerProps: vueTypes.types.props,
1607
+ searchAsMoveLabel: VueTypes.string,
1608
+ markerProps: VueTypes.object,
1609
+ clusterProps: VueTypes.object,
1515
1610
  renderItem: VueTypes.func,
1516
- showSearchAsMove: vueTypes.types.bool.def(true),
1611
+ showSearchAsMove: VueTypes.bool.def(true),
1517
1612
  autoClosePopover: VueTypes.bool,
1518
1613
  pagination: VueTypes.bool,
1519
1614
  defaultPin: VueTypes.string,
@@ -1522,7 +1617,9 @@ var ReactiveGoogleMap = {
1522
1617
  center: vueTypes.types.location,
1523
1618
  defaultRadius: vueTypes.types.number,
1524
1619
  unit: vueTypes.types.string,
1525
- pages: VueTypes.number.def(5)
1620
+ pages: VueTypes.number.def(5),
1621
+ calculateMarkers: VueTypes.func,
1622
+ highlightMarkerOnHover: VueTypes.bool.def(true)
1526
1623
  },
1527
1624
  methods: {
1528
1625
  renderMap: function renderMap(_ref) {
@@ -1537,9 +1634,7 @@ var ReactiveGoogleMap = {
1537
1634
  renderSearchAsMove = _ref.renderSearchAsMove,
1538
1635
  handlePreserveCenter = _ref.handlePreserveCenter,
1539
1636
  getPosition = _ref.getPosition,
1540
- markerProps = _ref.markerProps,
1541
1637
  autoClosePopover = _ref.autoClosePopover,
1542
- renderPopover = _ref.renderPopover,
1543
1638
  defaultPin = _ref.defaultPin;
1544
1639
  var h = this.$createElement;
1545
1640
  var style = {
@@ -1572,8 +1667,10 @@ var ReactiveGoogleMap = {
1572
1667
  "attrs": {
1573
1668
  "resultsToRender": resultsToRender,
1574
1669
  "getPosition": getPosition,
1575
- "markerProps": markerProps,
1670
+ "markerProps": this.markerProps,
1671
+ "clusterProps": this.clusterProps,
1576
1672
  "handlePreserveCenter": handlePreserveCenter,
1673
+ "highlightMarkerOnHover": this.highlightMarkerOnHover,
1577
1674
  "renderItem": this.$scopedSlots.renderItem ? function () {
1578
1675
  return {
1579
1676
  custom: _this.$scopedSlots.renderItem
@@ -1581,9 +1678,11 @@ var ReactiveGoogleMap = {
1581
1678
  } : this.renderItem,
1582
1679
  "defaultPin": defaultPin,
1583
1680
  "autoClosePopover": autoClosePopover,
1584
- "renderPopover": renderPopover,
1681
+ "renderPopover": this.$scopedSlots.renderPopover,
1682
+ "renderClusterPopover": this.$scopedSlots.renderClusterPopover,
1585
1683
  "showMarkerClusters": this.showMarkerClusters
1586
- }
1684
+ },
1685
+ "on": _rollupPluginBabelHelpers._extends({}, this.$listeners)
1587
1686
  }) : null]), renderSearchAsMove()]);
1588
1687
  },
1589
1688
  getMapRef: function getMapRef() {
@@ -1600,8 +1699,6 @@ var ReactiveGoogleMap = {
1600
1699
  }
1601
1700
  },
1602
1701
  render: function render() {
1603
- var _this3 = this;
1604
-
1605
1702
  var h = arguments[0];
1606
1703
  return h(RMConnected, _mergeJSXProps([{
1607
1704
  "attrs": {
@@ -1618,31 +1715,20 @@ var ReactiveGoogleMap = {
1618
1715
  "uRLParams": this.URLParams,
1619
1716
  "defaultSearchAsMove": this.searchAsMove,
1620
1717
  "showSearchAsMove": this.showSearchAsMove,
1718
+ "searchAsMoveLabel": this.searchAsMoveLabel,
1621
1719
  "showMarkers": this.showMarkers,
1622
1720
  "markerProps": this.markerProps,
1623
1721
  "autoClosePopover": this.autoClosePopover,
1624
1722
  "defaultPin": this.defaultPin,
1625
- "renderPopover": this.$scopedSlots.renderPopover ? function (item) {
1626
- return _this3.$scopedSlots.renderPopover(item);
1627
- } : null,
1723
+ "defaultQuery": this.defaultQuery,
1628
1724
  "autoCenter": this.autoCenter,
1629
1725
  "defaultCenter": this.defaultCenter,
1630
1726
  "defaultRadius": this.defaultRadius,
1631
1727
  "unit": this.unit,
1632
1728
  "pages": this.pages,
1633
1729
  "center": this.center,
1634
- "loader": this.loader
1635
- },
1636
- "on": {
1637
- "zoomChanged": function zoomChanged(zoom) {
1638
- _this3.$emit('zoom-changed', zoom);
1639
- },
1640
- "idle": function idle() {
1641
- _this3.$emit('idle');
1642
- },
1643
- "dragEnd": function dragEnd() {
1644
- _this3.$emit('drag-end');
1645
- }
1730
+ "loader": this.loader,
1731
+ "calculateMarkers": this.calculateMarkers
1646
1732
  }
1647
1733
  }, {
1648
1734
  scopedSlots: this.$scopedSlots,