@appbaseio/reactivesearch-vue 1.16.0-alpha.5 → 1.16.0-alpha.50

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 (105) hide show
  1. package/dist/@appbaseio/reactivesearch-vue.umd.js +11245 -9254
  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-10e5cf51.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-7302fe1a.js} +40 -21
  9. package/dist/cjs/{Container-f84e72fc.js → Container-8a08d663.js} +3 -11
  10. package/dist/cjs/DataSearch-deda2e96.js +2171 -0
  11. package/dist/cjs/DataSearch.js +18 -2151
  12. package/dist/cjs/{DropDown-c66be1a8.js → DropDown-16a2a728.js} +80 -95
  13. package/dist/cjs/DynamicRangeSlider.js +107 -43
  14. package/dist/cjs/Flex-699639d2.js +52 -0
  15. package/dist/cjs/FormControlList-73497794.js +47 -0
  16. package/dist/cjs/Input-64087a69.js +79 -0
  17. package/dist/cjs/ListItem-933c27e4.js +46 -0
  18. package/dist/cjs/MultiDropdownList.js +102 -68
  19. package/dist/cjs/MultiList.js +80 -50
  20. package/dist/cjs/MultiRange.js +21 -16
  21. package/dist/cjs/{Pagination-91df3b77.js → Pagination-e0654529.js} +4 -3
  22. package/dist/cjs/RangeInput.js +29 -45
  23. package/dist/cjs/RangeSlider.js +32 -30
  24. package/dist/cjs/ReactiveBase.js +55 -34
  25. package/dist/cjs/ReactiveComponent.js +75 -62
  26. package/dist/cjs/ReactiveGoogleMap.js +326 -235
  27. package/dist/cjs/ReactiveList.js +188 -241
  28. package/dist/cjs/ResultCard.js +8 -6
  29. package/dist/cjs/ResultList.js +8 -6
  30. package/dist/cjs/SelectedFilters.js +27 -12
  31. package/dist/cjs/SingleDropdownList.js +88 -60
  32. package/dist/cjs/SingleList.js +53 -35
  33. package/dist/cjs/SingleRange.js +18 -13
  34. package/dist/cjs/StateProvider.js +11 -7
  35. package/dist/cjs/{Title-e9beb554.js → Title-39765ee6.js} +3 -11
  36. package/dist/cjs/ToggleButton.js +35 -16
  37. package/dist/cjs/{_rollupPluginBabelHelpers-280a574c.js → _rollupPluginBabelHelpers-4abdbfff.js} +11 -1
  38. package/dist/cjs/{index-e0583d76.js → index-d44a0a21.js} +87 -13
  39. package/dist/cjs/index.js +30 -25
  40. package/dist/cjs/initReactivesearch.js +177 -103
  41. package/dist/cjs/install-d0645b5f.js +1244 -0
  42. package/dist/cjs/install.js +41 -44
  43. package/dist/cjs/ssr-c333c82c.js +39 -0
  44. package/dist/cjs/{utils-d1ea9f95.js → utils-23afb20b.js} +2 -2
  45. package/dist/cjs/version.js +1 -1
  46. package/dist/cjs/{vueTypes-c21f265b.js → vueTypes-6de9d2a9.js} +9 -4
  47. package/dist/es/Button-8b211174.js +59 -0
  48. package/dist/es/{DownShift-d8f2500f.js → CancelSvg-4d9e0857.js} +56 -17
  49. package/dist/es/Card-04b3c33e.js +23 -0
  50. package/dist/es/{ComponentWrapper-d0b21b95.js → ComponentWrapper-bbb717bc.js} +40 -21
  51. package/dist/es/Container-4383c6f0.js +10 -0
  52. package/dist/es/DataSearch-7a8a9368.js +2158 -0
  53. package/dist/es/DataSearch.js +17 -2150
  54. package/dist/es/{DropDown-5dbd69c2.js → DropDown-7639f223.js} +79 -94
  55. package/dist/es/DynamicRangeSlider.js +107 -43
  56. package/dist/es/Flex-aac91505.js +47 -0
  57. package/dist/es/FormControlList-fe389a2e.js +40 -0
  58. package/dist/es/Input-d1bb4868.js +71 -0
  59. package/dist/es/ListItem-bdb6d53d.js +39 -0
  60. package/dist/es/MultiDropdownList.js +102 -68
  61. package/dist/es/MultiList.js +80 -50
  62. package/dist/es/MultiRange.js +21 -16
  63. package/dist/es/{Pagination-800af44f.js → Pagination-3c50d4ba.js} +4 -3
  64. package/dist/es/RangeInput.js +29 -45
  65. package/dist/es/RangeSlider.js +32 -30
  66. package/dist/es/ReactiveBase.js +55 -34
  67. package/dist/es/ReactiveComponent.js +75 -62
  68. package/dist/es/ReactiveGoogleMap.js +326 -235
  69. package/dist/es/ReactiveList.js +188 -241
  70. package/dist/es/ResultCard.js +8 -6
  71. package/dist/es/ResultList.js +8 -6
  72. package/dist/es/SelectedFilters.js +27 -12
  73. package/dist/es/SingleDropdownList.js +88 -60
  74. package/dist/es/SingleList.js +53 -35
  75. package/dist/es/SingleRange.js +18 -13
  76. package/dist/es/StateProvider.js +11 -7
  77. package/dist/es/Title-579f8d6c.js +10 -0
  78. package/dist/es/ToggleButton.js +35 -16
  79. package/dist/es/{_rollupPluginBabelHelpers-c9fbe19f.js → _rollupPluginBabelHelpers-ecf6c03c.js} +11 -1
  80. package/dist/es/{index-1fe91a0a.js → index-5daa8276.js} +84 -14
  81. package/dist/es/index.js +26 -22
  82. package/dist/es/initReactivesearch.js +178 -104
  83. package/dist/es/install-183f5d19.js +1237 -0
  84. package/dist/es/install.js +39 -46
  85. package/dist/es/ssr-e3196de1.js +33 -0
  86. package/dist/es/{utils-ce3d86fd.js → utils-3a32e13f.js} +2 -2
  87. package/dist/es/version.js +1 -1
  88. package/dist/es/{vueTypes-98d938a9.js → vueTypes-9326e0be.js} +9 -4
  89. package/package.json +6 -4
  90. package/dist/cjs/Button-78d8bc26.js +0 -146
  91. package/dist/cjs/Card-b4af314f.js +0 -58
  92. package/dist/cjs/Flex-737c55be.js +0 -160
  93. package/dist/cjs/FormControlList-08dfb28e.js +0 -105
  94. package/dist/cjs/Input-643d02a7.js +0 -178
  95. package/dist/cjs/ListItem-0c58c5d2.js +0 -84
  96. package/dist/cjs/ssr-b7a729f9.js +0 -47
  97. package/dist/es/Button-6c71c66e.js +0 -137
  98. package/dist/es/Card-ecf70ba1.js +0 -51
  99. package/dist/es/Container-f5efec9e.js +0 -18
  100. package/dist/es/Flex-40a74d8a.js +0 -155
  101. package/dist/es/FormControlList-b96aebef.js +0 -98
  102. package/dist/es/Input-dfd9dd40.js +0 -170
  103. package/dist/es/ListItem-da73bc7d.js +0 -77
  104. package/dist/es/Title-22c2f3bf.js +0 -18
  105. 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-10e5cf51.js');
17
+ var vueTypes = require('./vueTypes-6de9d2a9.js');
18
+ var Pagination = require('./Pagination-e0654529.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-d44a0a21.js');
22
+ var ComponentWrapper = require('./ComponentWrapper-7302fe1a.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,63 @@ 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
+ markerIcon: null
1244
+ };
1229
1245
  },
1230
1246
  methods: {
1231
1247
  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);
1248
+ var handlePreserveCenter = this.$props.handlePreserveCenter;
1249
+
1250
+ if (this.highlightMarkerOnHover) {
1251
+ this.zIndex += 1;
1252
+ }
1253
+
1237
1254
  handlePreserveCenter(true);
1238
1255
  },
1239
1256
  removeMarkerZIndex: function removeMarkerZIndex() {
1240
- var _this$$props2 = this.$props,
1241
- handleTopMarker = _this$$props2.setMarkerOnTop,
1242
- handlePreserveCenter = _this$$props2.handlePreserveCenter;
1243
- handleTopMarker(null);
1257
+ var handlePreserveCenter = this.$props.handlePreserveCenter;
1258
+
1259
+ if (this.highlightMarkerOnHover) {
1260
+ this.zIndex -= 1;
1261
+ }
1262
+
1244
1263
  handlePreserveCenter(true);
1245
1264
  },
1246
1265
  openMarker: function openMarker() {
1247
1266
  var _ref, _extends2;
1248
1267
 
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;
1268
+ var _this$$props = this.$props,
1269
+ handleOpenMarkers = _this$$props.setOpenMarkers,
1270
+ openMarkers = _this$$props.openMarkers,
1271
+ marker = _this$$props.marker,
1272
+ autoClosePopover = _this$$props.autoClosePopover,
1273
+ handlePreserveCenter = _this$$props.handlePreserveCenter;
1255
1274
  var id = marker._id;
1256
- var newOpenMarkers = autoClosePopover ? (_ref = {}, _ref[id] = true, _ref) : _rollupPluginBabelHelpers._extends(_rollupPluginBabelHelpers._extends({}, openMarkers), {}, (_extends2 = {}, _extends2[id] = true, _extends2));
1275
+ var newOpenMarkers = autoClosePopover ? (_ref = {}, _ref[id] = true, _ref) : _rollupPluginBabelHelpers._extends({}, openMarkers, (_extends2 = {}, _extends2[id] = true, _extends2));
1257
1276
  handleOpenMarkers(newOpenMarkers);
1258
1277
  handlePreserveCenter(true);
1259
1278
  this.triggerAnalytics();
1279
+ this.$emit('open-marker-popover', marker);
1260
1280
  },
1261
1281
  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;
1282
+ var _this$$props2 = this.$props,
1283
+ handleOpenMarkers = _this$$props2.setOpenMarkers,
1284
+ marker = _this$$props2.marker,
1285
+ autoClosePopover = _this$$props2.autoClosePopover,
1286
+ handlePreserveCenter = _this$$props2.handlePreserveCenter,
1287
+ openMarkers = _this$$props2.openMarkers;
1268
1288
  var id = marker._id;
1269
1289
 
1270
1290
  var del = openMarkers[id],
@@ -1273,6 +1293,7 @@ var GoogleMapMarker = {
1273
1293
  var newOpenMarkers = autoClosePopover ? {} : activeMarkers;
1274
1294
  handleOpenMarkers(newOpenMarkers);
1275
1295
  handlePreserveCenter(true);
1296
+ this.$emit('close-marker-popover', marker);
1276
1297
  },
1277
1298
  triggerAnalytics: function triggerAnalytics() {
1278
1299
  this.recordResultClick(this.index, this.marker._id);
@@ -1286,10 +1307,10 @@ var GoogleMapMarker = {
1286
1307
 
1287
1308
  var h = this.$createElement;
1288
1309
  var additionalProps = {};
1289
- var _this$$props5 = this.$props,
1290
- getPosition = _this$$props5.getPosition,
1291
- renderPopover = _this$$props5.renderPopover,
1292
- openMarkers = _this$$props5.openMarkers;
1310
+ var _this$$props3 = this.$props,
1311
+ getPosition = _this$$props3.getPosition,
1312
+ _renderPopover = _this$$props3.renderPopover,
1313
+ openMarkers = _this$$props3.openMarkers;
1293
1314
 
1294
1315
  if (includeExternalSettings) {
1295
1316
  // to render pop-over correctly with MarkerWithLabel
@@ -1302,19 +1323,32 @@ var GoogleMapMarker = {
1302
1323
  }
1303
1324
 
1304
1325
  if (item._id in openMarkers) {
1305
- return h(InfoWindow, {
1306
- "attrs": {
1307
- "zIndex": 500,
1308
- "position": additionalProps.position,
1309
- "options": additionalProps.defaultOptions
1310
- },
1326
+ return h(InfoWindowWrapper, {
1311
1327
  "key": item._id + "-InfoWindow",
1312
- "on": {
1313
- "closeclick": function closeclick() {
1314
- return _this.closeMarker();
1328
+ "attrs": {
1329
+ "id": item._id,
1330
+ "renderPopover": function renderPopover(_handleClose) {
1331
+ return _renderPopover({
1332
+ item: item,
1333
+ handleClose: function handleClose() {
1334
+ _handleClose();
1335
+
1336
+ _this.closeMarker();
1337
+ }
1338
+ });
1339
+ },
1340
+ "infoWindowProps": {
1341
+ zIndex: 500,
1342
+ position: additionalProps.position,
1343
+ options: additionalProps.defaultOptions
1344
+ },
1345
+ "events": {
1346
+ closeclick: function closeclick() {
1347
+ return _this.closeMarker();
1348
+ }
1315
1349
  }
1316
1350
  }
1317
- }, [h("div", [renderPopover(item)])]);
1351
+ });
1318
1352
  }
1319
1353
 
1320
1354
  return null;
@@ -1324,35 +1358,35 @@ var GoogleMapMarker = {
1324
1358
  var _this2 = this;
1325
1359
 
1326
1360
  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;
1361
+ var _this$$props4 = this.$props,
1362
+ getPosition = _this$$props4.getPosition,
1363
+ renderItem = _this$$props4.renderItem,
1364
+ defaultPin = _this$$props4.defaultPin,
1365
+ renderPopover = _this$$props4.renderPopover,
1366
+ customMarkerProps = _this$$props4.markerProps,
1367
+ marker = _this$$props4.marker;
1337
1368
  var markerProps = {};
1338
1369
 
1339
- if (markerOnTop === marker._id) {
1340
- markerProps.zIndex = window.google.maps.Marker.MAX_ZINDEX + 1;
1370
+ if (this.zIndex) {
1371
+ markerProps.zIndex = window.google.maps.Marker.MAX_ZINDEX + this.zIndex;
1341
1372
  }
1342
1373
 
1343
1374
  if (renderItem) {
1375
+ marker.setIcon = function (icon) {
1376
+ _this2.markerIcon = icon;
1377
+ };
1378
+
1344
1379
  var data = renderItem(marker);
1345
1380
 
1346
1381
  if ('label' in data) {
1347
1382
  return h(MarkerWithLabel, {
1348
1383
  "key": marker._id,
1349
1384
  "attrs": {
1385
+ "metaData": marker,
1350
1386
  "marker": getPosition(marker),
1351
1387
  "labelAnchor": new window.google.maps.Point(0, 30),
1352
1388
  "handleMouseOver": this.increaseMarkerZIndex,
1353
- "handleFocus": this.increaseMarkerZIndex,
1354
1389
  "handleMouseOut": this.removeMarkerZIndex,
1355
- "handleBlur": this.removeMarkerZIndex,
1356
1390
  "handleClick": this.openMarker,
1357
1391
  "zIndex": markerProps.zIndex,
1358
1392
  "renderMarker": function renderMarker() {
@@ -1373,12 +1407,11 @@ var GoogleMapMarker = {
1373
1407
  return h(MarkerWithLabel, {
1374
1408
  "key": marker._id,
1375
1409
  "attrs": {
1410
+ "metaData": marker,
1376
1411
  "marker": getPosition(marker),
1377
1412
  "handleClick": this.openMarker,
1378
1413
  "handleMouseOver": this.increaseMarkerZIndex,
1379
- "handleFocus": this.increaseMarkerZIndex,
1380
1414
  "handleMouseOut": this.removeMarkerZIndex,
1381
- "handleBlur": this.removeMarkerZIndex,
1382
1415
  "zIndex": markerProps.zIndex,
1383
1416
  "renderMarker": function renderMarker() {
1384
1417
  return h("div", {
@@ -1400,18 +1433,19 @@ var GoogleMapMarker = {
1400
1433
  return h(Marker, {
1401
1434
  "key": marker._id,
1402
1435
  "attrs": {
1403
- "icon": markerProps.icon,
1404
1436
  "zIndex": markerProps.zIndex,
1405
- "position": getPosition(marker)
1437
+ "position": getPosition(marker),
1438
+ "options": {
1439
+ metaData: marker
1440
+ },
1441
+ "icon": this.markerIcon || markerProps.icon
1406
1442
  },
1407
1443
  "on": {
1408
1444
  "click": function click() {
1409
- return _this2.openMarker(marker._id, autoClosePopover || false, handlePreserveCenter);
1445
+ return _this2.openMarker();
1410
1446
  },
1411
1447
  "mouseover": this.increaseMarkerZIndex,
1412
- "focus": this.increaseMarkerZIndex,
1413
- "mouseout": this.removeMarkerZIndex,
1414
- "blur": this.removeMarkerZIndex
1448
+ "mouseout": this.removeMarkerZIndex
1415
1449
  },
1416
1450
  "props": _rollupPluginBabelHelpers._extends({}, customMarkerProps)
1417
1451
  }, [renderPopover ? this.renderPopoverClick(marker) : null]);
@@ -1430,34 +1464,60 @@ var GoogleMapMarkers = {
1430
1464
  resultsToRender: VueTypes.array,
1431
1465
  getPosition: VueTypes.func,
1432
1466
  renderItem: VueTypes.func,
1467
+ renderClusterPopover: VueTypes.func,
1433
1468
  defaultPin: VueTypes.string,
1434
1469
  autoClosePopover: VueTypes.bool,
1435
1470
  handlePreserveCenter: VueTypes.func,
1436
1471
  renderPopover: VueTypes.func,
1437
1472
  markerProps: VueTypes.object,
1438
- showMarkerClusters: VueTypes.bool
1473
+ clusterProps: VueTypes.object,
1474
+ showMarkerClusters: VueTypes.bool,
1475
+ highlightMarkerOnHover: VueTypes.bool
1439
1476
  },
1440
1477
  data: function data() {
1441
1478
  return {
1442
- markerOnTop: null,
1443
- openMarkers: {}
1479
+ openMarkers: {},
1480
+ clickedCluster: null,
1481
+ clusterMarkers: []
1444
1482
  };
1445
1483
  },
1446
1484
  methods: {
1447
- setMarkerOnTop: function setMarkerOnTop(markerOnTop) {
1448
- this.markerOnTop = markerOnTop;
1449
- },
1450
1485
  setOpenMarkers: function setOpenMarkers(openMarkers) {
1451
1486
  this.openMarkers = openMarkers;
1487
+ },
1488
+ getClusterMarkers: function getClusterMarkers() {
1489
+ if (this.clickedCluster && Array.isArray(this.clickedCluster.getMarkers())) {
1490
+ return this.clickedCluster.getMarkers().map(function (marker) {
1491
+ return marker.metaData;
1492
+ });
1493
+ }
1494
+
1495
+ return [];
1496
+ },
1497
+ getAdditionalProps: function getAdditionalProps() {
1498
+ return {
1499
+ position: {
1500
+ lat: this.clickedCluster.getCenter().lat(),
1501
+ lng: this.clickedCluster.getCenter().lng()
1502
+ },
1503
+ defaultOptions: {
1504
+ pixelOffset: new window.google.maps.Size(0, -30)
1505
+ }
1506
+ };
1507
+ },
1508
+ closeMarker: function closeMarker() {
1509
+ this.clickedCluster = null;
1510
+ this.clusterMarkers = [];
1511
+ this.$emit('close-cluster-popover');
1452
1512
  }
1453
1513
  },
1454
1514
  render: function render() {
1515
+ var _this = this;
1516
+
1455
1517
  var h = arguments[0];
1456
1518
  var resultsToRender = this.$props.resultsToRender;
1457
- var markerOnTop = this.markerOnTop,
1458
- openMarkers = this.openMarkers;
1519
+ var openMarkers = this.openMarkers;
1459
1520
  var markerProps = {
1460
- markerOnTop: markerOnTop,
1461
1521
  openMarkers: openMarkers,
1462
1522
  setMarkerOnTop: this.setMarkerOnTop,
1463
1523
  setOpenMarkers: this.setOpenMarkers,
@@ -1468,19 +1528,55 @@ var GoogleMapMarkers = {
1468
1528
  handlePreserveCenter: this.handlePreserveCenter,
1469
1529
  renderPopover: this.renderPopover,
1470
1530
  markerProps: this.markerProps,
1471
- showMarkerClusters: this.showMarkerClusters
1531
+ showMarkerClusters: this.showMarkerClusters,
1532
+ highlightMarkerOnHover: this.highlightMarkerOnHover
1472
1533
  };
1473
1534
 
1474
1535
  if (this.showMarkerClusters) {
1475
- return h(GmapCluster, [resultsToRender.map(function (marker, index) {
1536
+ return h("div", [h(GmapCluster, {
1537
+ "props": _rollupPluginBabelHelpers._extends({}, this.clusterProps),
1538
+ "on": {
1539
+ "click": function click(cluster) {
1540
+ _this.clickedCluster = cluster;
1541
+ _this.clusterMarkers = _this.getClusterMarkers();
1542
+
1543
+ _this.$emit('open-cluster-popover', _this.clusterMarkers);
1544
+ }
1545
+ },
1546
+ "ref": "clusterRef"
1547
+ }, [resultsToRender.map(function (marker, index) {
1476
1548
  return h(GoogleMapMarker$1, {
1477
1549
  "attrs": {
1478
1550
  "index": index,
1479
1551
  "marker": marker
1480
1552
  },
1481
- "props": _rollupPluginBabelHelpers._extends({}, markerProps)
1553
+ "props": _rollupPluginBabelHelpers._extends({}, markerProps),
1554
+ "on": _rollupPluginBabelHelpers._extends({}, _this.$listeners)
1482
1555
  });
1483
- })]);
1556
+ })]), this.clickedCluster && this.renderClusterPopover ? h(InfoWindowWrapper, {
1557
+ "attrs": {
1558
+ "id": "cluster",
1559
+ "infoWindowProps": {
1560
+ zIndex: 500,
1561
+ position: this.getAdditionalProps().position,
1562
+ options: this.getAdditionalProps().defaultOptions
1563
+ },
1564
+ "renderPopover": function renderPopover(_handleClose) {
1565
+ return _this.renderClusterPopover({
1566
+ markers: _this.clusterMarkers,
1567
+ cluster: _this.clickedCluster,
1568
+ handleClose: function handleClose() {
1569
+ _handleClose();
1570
+
1571
+ _this.closeMarker();
1572
+ }
1573
+ });
1574
+ },
1575
+ "events": {
1576
+ closeclick: this.closeMarker
1577
+ }
1578
+ }
1579
+ }) : null]);
1484
1580
  }
1485
1581
 
1486
1582
  return h("div", [resultsToRender.map(function (marker, index) {
@@ -1489,7 +1585,8 @@ var GoogleMapMarkers = {
1489
1585
  "index": index,
1490
1586
  "marker": marker
1491
1587
  },
1492
- "props": _rollupPluginBabelHelpers._extends({}, markerProps)
1588
+ "props": _rollupPluginBabelHelpers._extends({}, markerProps),
1589
+ "on": _rollupPluginBabelHelpers._extends({}, _this.$listeners)
1493
1590
  });
1494
1591
  })]);
1495
1592
  }
@@ -1501,19 +1598,22 @@ var ReactiveGoogleMap = {
1501
1598
  className: vueTypes.types.string,
1502
1599
  componentId: vueTypes.types.stringRequired,
1503
1600
  dataField: vueTypes.types.stringRequired,
1601
+ defaultQuery: VueTypes.func,
1504
1602
  loader: vueTypes.types.title,
1505
1603
  defaultZoom: VueTypes.number.def(13),
1506
1604
  react: vueTypes.types.react,
1507
1605
  size: vueTypes.types.number,
1508
1606
  sortBy: vueTypes.types.sortBy,
1509
- URLParams: vueTypes.types.bool,
1607
+ URLParams: VueTypes.bool,
1510
1608
  mapProps: VueTypes.object,
1511
1609
  showMarkers: VueTypes.bool.def(true),
1512
1610
  showMarkerClusters: VueTypes.bool.def(false),
1513
1611
  searchAsMove: VueTypes.bool.def(false),
1514
- markerProps: vueTypes.types.props,
1612
+ searchAsMoveLabel: VueTypes.string,
1613
+ markerProps: VueTypes.object,
1614
+ clusterProps: VueTypes.object,
1515
1615
  renderItem: VueTypes.func,
1516
- showSearchAsMove: vueTypes.types.bool.def(true),
1616
+ showSearchAsMove: VueTypes.bool.def(true),
1517
1617
  autoClosePopover: VueTypes.bool,
1518
1618
  pagination: VueTypes.bool,
1519
1619
  defaultPin: VueTypes.string,
@@ -1522,7 +1622,9 @@ var ReactiveGoogleMap = {
1522
1622
  center: vueTypes.types.location,
1523
1623
  defaultRadius: vueTypes.types.number,
1524
1624
  unit: vueTypes.types.string,
1525
- pages: VueTypes.number.def(5)
1625
+ pages: VueTypes.number.def(5),
1626
+ calculateMarkers: VueTypes.func,
1627
+ highlightMarkerOnHover: VueTypes.bool.def(true)
1526
1628
  },
1527
1629
  methods: {
1528
1630
  renderMap: function renderMap(_ref) {
@@ -1537,9 +1639,7 @@ var ReactiveGoogleMap = {
1537
1639
  renderSearchAsMove = _ref.renderSearchAsMove,
1538
1640
  handlePreserveCenter = _ref.handlePreserveCenter,
1539
1641
  getPosition = _ref.getPosition,
1540
- markerProps = _ref.markerProps,
1541
1642
  autoClosePopover = _ref.autoClosePopover,
1542
- renderPopover = _ref.renderPopover,
1543
1643
  defaultPin = _ref.defaultPin;
1544
1644
  var h = this.$createElement;
1545
1645
  var style = {
@@ -1572,8 +1672,10 @@ var ReactiveGoogleMap = {
1572
1672
  "attrs": {
1573
1673
  "resultsToRender": resultsToRender,
1574
1674
  "getPosition": getPosition,
1575
- "markerProps": markerProps,
1675
+ "markerProps": this.markerProps,
1676
+ "clusterProps": this.clusterProps,
1576
1677
  "handlePreserveCenter": handlePreserveCenter,
1678
+ "highlightMarkerOnHover": this.highlightMarkerOnHover,
1577
1679
  "renderItem": this.$scopedSlots.renderItem ? function () {
1578
1680
  return {
1579
1681
  custom: _this.$scopedSlots.renderItem
@@ -1581,9 +1683,11 @@ var ReactiveGoogleMap = {
1581
1683
  } : this.renderItem,
1582
1684
  "defaultPin": defaultPin,
1583
1685
  "autoClosePopover": autoClosePopover,
1584
- "renderPopover": renderPopover,
1686
+ "renderPopover": this.$scopedSlots.renderPopover,
1687
+ "renderClusterPopover": this.$scopedSlots.renderClusterPopover,
1585
1688
  "showMarkerClusters": this.showMarkerClusters
1586
- }
1689
+ },
1690
+ "on": _rollupPluginBabelHelpers._extends({}, this.$listeners)
1587
1691
  }) : null]), renderSearchAsMove()]);
1588
1692
  },
1589
1693
  getMapRef: function getMapRef() {
@@ -1600,8 +1704,6 @@ var ReactiveGoogleMap = {
1600
1704
  }
1601
1705
  },
1602
1706
  render: function render() {
1603
- var _this3 = this;
1604
-
1605
1707
  var h = arguments[0];
1606
1708
  return h(RMConnected, _mergeJSXProps([{
1607
1709
  "attrs": {
@@ -1618,31 +1720,20 @@ var ReactiveGoogleMap = {
1618
1720
  "uRLParams": this.URLParams,
1619
1721
  "defaultSearchAsMove": this.searchAsMove,
1620
1722
  "showSearchAsMove": this.showSearchAsMove,
1723
+ "searchAsMoveLabel": this.searchAsMoveLabel,
1621
1724
  "showMarkers": this.showMarkers,
1622
1725
  "markerProps": this.markerProps,
1623
1726
  "autoClosePopover": this.autoClosePopover,
1624
1727
  "defaultPin": this.defaultPin,
1625
- "renderPopover": this.$scopedSlots.renderPopover ? function (item) {
1626
- return _this3.$scopedSlots.renderPopover(item);
1627
- } : null,
1728
+ "defaultQuery": this.defaultQuery,
1628
1729
  "autoCenter": this.autoCenter,
1629
1730
  "defaultCenter": this.defaultCenter,
1630
1731
  "defaultRadius": this.defaultRadius,
1631
1732
  "unit": this.unit,
1632
1733
  "pages": this.pages,
1633
1734
  "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
- }
1735
+ "loader": this.loader,
1736
+ "calculateMarkers": this.calculateMarkers
1646
1737
  }
1647
1738
  }, {
1648
1739
  scopedSlots: this.$scopedSlots,