{"version":3,"file":"jwsdw-storeFinder.js","sources":["../../../../../../../webfrontend/assets/vendor/markerclustererplus.js","../../../../../../../temp/ngAnnotate/assets/modules/storeFinder/app.module.js","../../../../../../../temp/ngAnnotate/assets/modules/storeFinder/app.constants.js","../../../../../../../temp/ngAnnotate/assets/modules/storeFinder/app.controller.js","../../../../../../../temp/ngAnnotate/assets/modules/storeFinder/autoFocus.directive.js","../../../../../../../temp/ngAnnotate/assets/jwsdw-storeFinder.js"],"sourcesContent":["var MarkerClusterer=function(){\"use strict\";function e(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function t(e,t){for(var i=0;i=332&&google.maps.event.addDomListener(this.div_,\"touchstart\",(function(e){e.stopPropagation()})),google.maps.event.addDomListener(this.div_,\"click\",(function(n){if(e=!1,!t){if(google.maps.event.trigger(s,\"click\",i.cluster_),google.maps.event.trigger(s,\"clusterclick\",i.cluster_),s.getZoomOnClick()){var r=s.getMaxZoom(),a=i.cluster_.getBounds();s.getMap().fitBounds(a),setTimeout((function(){s.getMap().fitBounds(a),null!==r&&s.getMap().getZoom()>r&&s.getMap().setZoom(r+1)}),100)}n.cancelBubble=!0,n.stopPropagation&&n.stopPropagation()}})),google.maps.event.addDomListener(this.div_,\"mouseover\",(function(){google.maps.event.trigger(s,\"mouseover\",i.cluster_)})),google.maps.event.addDomListener(this.div_,\"mouseout\",(function(){google.maps.event.trigger(s,\"mouseout\",i.cluster_)}))}},{key:\"onRemove\",value:function(){this.div_&&this.div_.parentNode&&(this.hide(),google.maps.event.removeListener(this.boundsChangedListener_),google.maps.event.clearInstanceListeners(this.div_),this.div_.parentNode.removeChild(this.div_),this.div_=null)}},{key:\"draw\",value:function(){if(this.visible_){var e=this.getPosFromLatLng_(this.center_);this.div_.style.top=e.y+\"px\",this.div_.style.left=e.x+\"px\"}}},{key:\"hide\",value:function(){this.div_&&(this.div_.style.display=\"none\"),this.visible_=!1}},{key:\"show\",value:function(){if(this.div_){var e=this.cluster_.getMarkerClusterer().ariaLabelFn(this.sums_.text),t=this.backgroundPosition_.split(\" \"),i=parseInt(t[0].replace(/^\\s+|\\s+$/g,\"\"),10),s=parseInt(t[1].replace(/^\\s+|\\s+$/g,\"\"),10);this.div_.style.cssText=this.createCss_(this.getPosFromLatLng_(this.center_));var n=\"\";if(this.cluster_.getMarkerClusterer().getEnableRetinaIcons())n=\"width: \".concat(this.width_,\"px; height: \").concat(this.height_,\"px\");else{var r=-1*s,a=-1*i+this.width_,o=-1*s+this.height_,l=-1*i;n=\"clip: rect(\".concat(r,\"px, \").concat(a,\"px, \").concat(o,\"px, \").concat(l,\"px)\")}var u=[\"position: absolute\",\"top: \".concat(s,\"px\"),\"left: \".concat(i,\"px\"),n].join(\";\"),h=[\"position: absolute\",\"top: \".concat(this.anchorText_[0],\"px\"),\"left: \".concat(this.anchorText_[1],\"px\"),\"color: \".concat(this.textColor_),\"font-size: \".concat(this.textSize_,\"px\"),\"font-family: \".concat(this.fontFamily_),\"font-weight: \".concat(this.fontWeight_),\"font-style: \".concat(this.fontStyle_),\"text-decoration: \".concat(this.textDecoration_),\"text-align: center\",\"width: \".concat(this.width_,\"px\"),\"line-height: \".concat(this.height_,\"px\")].join(\";\");this.div_.innerHTML=\"\\n\".concat(this.sums_.text,\\n
\\n ').concat(this.sums_.text,\"\\n
\\n\"),void 0===this.sums_.title||\"\"===this.sums_.title?this.div_.title=this.cluster_.getMarkerClusterer().getTitle():this.div_.title=this.sums_.title,this.div_.style.display=\"\"}this.visible_=!0}},{key:\"useStyle\",value:function(e){this.sums_=e;var t=Math.max(0,e.index-1);t=Math.min(this.styles_.length-1,t);var i=this.styles_[t];this.url_=i.url,this.height_=i.height,this.width_=i.width,this.anchorText_=i.anchorText||[0,0],this.anchorIcon_=i.anchorIcon||[Math.floor(this.height_/2),Math.floor(this.width_/2)],this.textColor_=i.textColor||\"black\",this.textSize_=i.textSize||11,this.textDecoration_=i.textDecoration||\"none\",this.fontWeight_=i.fontWeight||\"bold\",this.fontStyle_=i.fontStyle||\"normal\",this.fontFamily_=i.fontFamily||\"Arial,sans-serif\",this.backgroundPosition_=i.backgroundPosition||\"0 0\"}},{key:\"setCenter\",value:function(e){this.center_=e}},{key:\"createCss_\",value:function(e){return[\"z-index: \".concat(this.cluster_.getMarkerClusterer().getZIndex()),\"cursor: pointer\",\"position: absolute; top: \".concat(e.y,\"px; left: \").concat(e.x,\"px\"),\"width: \".concat(this.width_,\"px; height: \").concat(this.height_,\"px\"),\"-webkit-user-select: none\",\"-khtml-user-select: none\",\"-moz-user-select: none\",\"-o-user-select: none\",\"user-select: none\"].join(\";\")}},{key:\"getPosFromLatLng_\",value:function(e){var t=this.getProjection().fromLatLngToDivPixel(e);return t.x=Math.floor(t.x-this.anchorIcon_[1]),t.y=Math.floor(t.y-this.anchorIcon_[0]),t}}]),r}(l),h=function(){function t(i){e(this,t),this.markerClusterer_=i,this.map_=this.markerClusterer_.getMap(),this.minClusterSize_=this.markerClusterer_.getMinimumClusterSize(),this.averageCenter_=this.markerClusterer_.getAverageCenter(),this.markers_=[],this.center_=null,this.bounds_=null,this.clusterIcon_=new u(this,this.markerClusterer_.getStyles())}return i(t,[{key:\"getSize\",value:function(){return this.markers_.length}},{key:\"getMarkers\",value:function(){return this.markers_}},{key:\"getCenter\",value:function(){return this.center_}},{key:\"getMap\",value:function(){return this.map_}},{key:\"getMarkerClusterer\",value:function(){return this.markerClusterer_}},{key:\"getBounds\",value:function(){for(var e=new google.maps.LatLngBounds(this.center_,this.center_),t=this.getMarkers(),i=0;ir)e.getMap()!==this.map_&&e.setMap(this.map_);else if(nt)this.clusterIcon_.hide();else if(e1&&void 0!==arguments[1]?arguments[1]:[],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return e(this,r),(i=a(this,n(r).call(this))).options=o,i.markers_=[],i.clusters_=[],i.listeners_=[],i.activeMap_=null,i.ready_=!1,i.ariaLabelFn=i.options.ariaLabelFn||function(){return\"\"},i.zIndex_=i.options.zIndex||google.maps.Marker.MAX_ZINDEX+1,i.gridSize_=i.options.gridSize||60,i.minClusterSize_=i.options.minimumClusterSize||2,i.maxZoom_=i.options.maxZoom||null,i.styles_=i.options.styles||[],i.title_=i.options.title||\"\",i.zoomOnClick_=c(i.options,\"zoomOnClick\",!0),i.averageCenter_=c(i.options,\"averageCenter\",!1),i.ignoreHidden_=c(i.options,\"ignoreHidden\",!1),i.enableRetinaIcons_=c(i.options,\"enableRetinaIcons\",!1),i.imagePath_=i.options.imagePath||r.IMAGE_PATH,i.imageExtension_=i.options.imageExtension||r.IMAGE_EXTENSION,i.imageSizes_=i.options.imageSizes||r.IMAGE_SIZES,i.calculator_=i.options.calculator||r.CALCULATOR,i.batchSize_=i.options.batchSize||r.BATCH_SIZE,i.batchSizeIE_=i.options.batchSizeIE||r.BATCH_SIZE_IE,i.clusterClass_=i.options.clusterClass||\"cluster\",-1!==navigator.userAgent.toLowerCase().indexOf(\"msie\")&&(i.batchSize_=i.batchSizeIE_),i.setupStyles_(),i.addMarkers(s,!0),i.setMap(t),i}return s(r,t),i(r,[{key:\"onAdd\",value:function(){var e=this;this.activeMap_=this.getMap(),this.ready_=!0,this.repaint(),this.prevZoom_=this.getMap().getZoom(),this.listeners_=[google.maps.event.addListener(this.getMap(),\"zoom_changed\",(function(){var t=e.getMap(),i=t.minZoom||0,s=Math.min(t.maxZoom||100,t.mapTypes[t.getMapTypeId()].maxZoom),n=Math.min(Math.max(e.getMap().getZoom(),i),s);e.prevZoom_!=n&&(e.prevZoom_=n,e.resetViewport_(!1))})),google.maps.event.addListener(this.getMap(),\"idle\",(function(){e.redraw_()}))]}},{key:\"onRemove\",value:function(){for(var e=0;e0))for(var e=0;e3?new google.maps.LatLngBounds(this.getMap().getBounds().getSouthWest(),this.getMap().getBounds().getNorthEast()):new google.maps.LatLngBounds(new google.maps.LatLng(85.02070771743472,-178.48388434375),new google.maps.LatLng(-85.08136444384544,178.00048865625));for(var s=this.getExtendedBounds(i),n=Math.min(e+this.batchSize_,this.markers_.length),r=e;r', // eslint-disable-line\r\n 'OwnStore-selected': '', // eslint-disable-line\r\n 'Franchise': '', // eslint-disable-line\r\n 'Franchise-selected': '', // eslint-disable-line\r\n 'Retailer': '', // eslint-disable-line\r\n 'Retailer-selected': '', // eslint-disable-line\r\n 'Outlet': '', // eslint-disable-line\r\n 'Outlet-selected': '' // eslint-disable-line\r\n })\r\n .constant('CLUSTERIMAGEURL', window.jwsdwStorefinderSettings.markers.clusterer)\r\n .constant('TEXTS', window.jwsdwStorefinderSettings.texts);\r\n}(angular));\r\n","'use strict';\r\n\r\n(function (angular, $) {\r\n StoreFinderController.$inject = ['$scope', '$location', '$window', '$document', 'locationService', 'storeService', 'MAPSETTINGS', 'PROMOTIONS', 'SELECTEDPROMOS', 'SERVICES', 'ICONS', 'CLUSTERIMAGEURL', 'TEXTS', 'IS_GOOGLE_AVAILABLE'];\r\n angular\r\n .module('jwsdw.storeFinder')\r\n .config(['$locationProvider', function($locationProvider) {\r\n $locationProvider.html5Mode(true);\r\n // $locationProvider.hashPrefix('?');\r\n }])\r\n .controller('StoreFinderController', StoreFinderController);\r\n\r\n /**\r\n * @class jwsdwStoreFinder.StoreFinderController\r\n * @description Initializes the StoreFinderController\r\n * @param {Object} $scope current scope\r\n * @param {Object} $location browser location object\r\n * @param {Object} $window browser window object\r\n * @param {Object} $document browser document object\r\n * @param {Object} locationService service providing location functions\r\n * @param {Object} storeService service for stores\r\n * @param {Object} MAPSETTINGS settings for initializing google mas\r\n * @param {Object} PROMOTIONS active store promotions\r\n * @param {Object} SELECTEDPROMOS preselected store promotions\r\n * @param {Object} SERVICES active store services\r\n * @param {Object} ICONS contains marker icons\r\n * @param {Object} CLUSTERIMAGEURL cluster marker image\r\n * @param {Object} TEXTS localized texts\r\n * @param {Boolean} IS_GOOGLE_AVAILABLE true if google maps was loaded successfully (provided though jwsdwSettings)\r\n * @constructor\r\n */\r\n function StoreFinderController($scope, $location, $window, $document, locationService, storeService, MAPSETTINGS, PROMOTIONS, SELECTEDPROMOS, SERVICES, ICONS, CLUSTERIMAGEURL, TEXTS, IS_GOOGLE_AVAILABLE) { // eslint-disable-line\r\n var vm = this,\r\n $map = document.getElementById('jwsdw-map'),\r\n gmap,\r\n markers = [],\r\n _ready = false,\r\n _filter = $location.search().filter ? $location.search().filter.split(',') : [],\r\n _stores = [],\r\n _promoServices = PROMOTIONS.concat(SERVICES);\r\n\r\n vm.mapView = true;\r\n vm.stores = [];\r\n vm.selectedStore = null;\r\n vm.searchQuery = '';\r\n vm.searchLoading = false;\r\n vm.searchByAddress = searchByAddress;\r\n vm.locatePosition = locatePosition;\r\n vm.onSearchSubmit = onSearchSubmit;\r\n vm.selectStore = selectStore;\r\n vm.highlightStore = highlightStore;\r\n vm.error = null;\r\n vm.locationError = locationService.error;\r\n vm.viewport = '';\r\n vm.service = $location.search().service;\r\n vm.selectedPromos = SELECTEDPROMOS ? SELECTEDPROMOS : [];\r\n vm.random = function() {\r\n return Math.round((new Date()).getTime() / 1000);\r\n };\r\n\r\n // hide unrelated promotions without a picture on the general storeFinder\r\n vm.promotions = PROMOTIONS.filter(function(promotion) {\r\n return promotion.picture || vm.selectedPromos.indexOf(promotion.id) !== -1;\r\n });\r\n\r\n vm.services = SERVICES;\r\n vm.filter = {};\r\n _filter.forEach(function(filter) {\r\n vm.filter[filter] = true;\r\n });\r\n\r\n vm.filterCount = 0;\r\n vm.openFilterPicker = openFilterPicker;\r\n vm.filterHasResults = filterHasResults;\r\n vm.canBeFiltered = canBeFiltered;\r\n vm.applyFilters = applyFilters;\r\n\r\n $scope.filter = vm.filter;\r\n\r\n /**\r\n * @description activate function\r\n * @returns {void}\r\n */\r\n this.$onInit = function () {\r\n vm.searchQuery = $location.search().location;\r\n\r\n $window.jwsdwMediator.publish('updateBreadcrumbs', [\r\n {\r\n 'text': TEXTS.title,\r\n 'url': $window.location.pathname\r\n }\r\n ]);\r\n\r\n // activate google maps functionalities\r\n if (!IS_GOOGLE_AVAILABLE) {\r\n $window.jwsdwMediator.subscribe('activateGoogleMaps', function() {\r\n activateMaps();\r\n });\r\n } else {\r\n activateMaps();\r\n }\r\n\r\n vm.filterCount = _filter.filter(function(filter) {\r\n return !/noJWStores|noRetailers|noOutlets/.test(filter);\r\n }).length;\r\n\r\n _filter.forEach(function(f) {\r\n vm.filter[f] = true;\r\n });\r\n\r\n $window.jwsdwMediator.subscribe('closeStoreCard', function() {\r\n selectStore(null);\r\n vm.selectedStore = null;\r\n });\r\n };\r\n\r\n /**\r\n * @description Method to initialize google maps\r\n * @returns {void}\r\n */\r\n function activateMaps() {\r\n var defaultLocation = new $window.google.maps.LatLng(MAPSETTINGS.lat, MAPSETTINGS.lng),\r\n mapOptions = {\r\n 'center': defaultLocation,\r\n 'zoom': MAPSETTINGS.zoom,\r\n 'maxZoom': 18,\r\n 'minZoom': 5,\r\n 'mapTypeId': $window.google.maps.MapTypeId.ROADMAP,\r\n 'draggable': true,\r\n 'disableDefaultUI': true,\r\n 'streetViewControl': false,\r\n 'mapTypeControl': false,\r\n 'zoomControl': /large/.test(vm.viewport)\r\n };\r\n\r\n gmap = new $window.google.maps.Map($document[0].getElementById('jwsdw-map'), mapOptions);\r\n\r\n $window.google.maps.event.addDomListener($window, 'load', function() {\r\n var participatingStores;\r\n\r\n _ready = true;\r\n\r\n if (vm.searchQuery) {\r\n searchByAddress(vm.searchQuery);\r\n }\r\n if (vm.selectedPromos.length > 0 && !vm.searchQuery) {\r\n // presearch stores when preselected promotions are set\r\n participatingStores = vm.promotions.concat(vm.services).reduce(function(promoStores, promo) {\r\n if (vm.selectedPromos.indexOf(promo.id) === -1) {\r\n return promoStores;\r\n }\r\n return promoStores.concat(promo.participatingStores);\r\n }, []);\r\n getStores(participatingStores);\r\n }\r\n });\r\n\r\n $window.google.maps.event.addDomListener($window, 'resize', function() {\r\n if (gmap) {\r\n gmap.setOptions({\r\n 'zoomControl': /large/.test(vm.viewport)\r\n });\r\n resizeMap();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description Method to search stores by address\r\n * @param {String} searchQuery search query\r\n * @returns {void}\r\n */\r\n function searchByAddress(searchQuery) {\r\n if (!_ready || searchQuery === '') {\r\n return;\r\n }\r\n\r\n document.activeElement.blur();\r\n\r\n vm.searchLoading = true;\r\n vm.positionLocated = false;\r\n vm.stores = [];\r\n\r\n $location.search('location', searchQuery);\r\n\r\n $window.jwsdwMediator.publish('updateBreadcrumbs', [\r\n {\r\n 'text': TEXTS.title,\r\n 'url': $window.location.pathname\r\n },\r\n {\r\n 'text': searchQuery,\r\n 'url': $window.location.pathname + '/?location=' + searchQuery\r\n }\r\n ]);\r\n\r\n clearMarkers();\r\n\r\n storeService\r\n .searchByAddress(searchQuery)\r\n .then(searchSuccess, searchError);\r\n\r\n /**\r\n * @description Method called on success\r\n * @param {Object} response response object\r\n * @param {Object} response.stores stores container\r\n * @param {Object[]} response.stores.stores array of stores\r\n * @param {Object} response.stores.myStore myStore object\r\n * @param {Object} response.position coordinates container\r\n * @param {Number} response.position.lat latitude\r\n * @param {Number} response.position.lng longitude\r\n * @returns {void}\r\n */\r\n function searchSuccess(response) {\r\n vm.searchLoading = false;\r\n vm.selectedStore = null;\r\n\r\n if (!response) {\r\n return searchError();\r\n }\r\n _stores = response.stores.stores;\r\n\r\n if (response.stores.myStore) {\r\n response.stores.myStore.myStore = true;\r\n _stores.unshift(response.stores.myStore);\r\n }\r\n gmap.setCenter(response.position);\r\n gmap.setZoom(11);\r\n\r\n _centerViewportOnMap();\r\n\r\n renderStores(_stores);\r\n\r\n window.dataLayer.push({\r\n 'event': 'ce.misc',\r\n 'eventCategory': 'Misc',\r\n 'eventAction': 'Storefinder',\r\n 'eventLabel': searchQuery,\r\n 'eventValue': undefined,\r\n 'nonInteraction': false,\r\n 'searchResults': response.stores.stores.length\r\n });\r\n }\r\n\r\n /**\r\n * @description Method called on error\r\n * @returns {void}\r\n */\r\n function searchError() {\r\n vm.searchLoading = false;\r\n vm.stores = [];\r\n vm.selectedStore = null;\r\n vm.error = 'SEARCH_ERROR';\r\n setTimeout(resizeMap, 200); // resize map after CSS animation\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to search stores by coordinates\r\n * @param {Number} lat Latitude of current position\r\n * @param {Number} lng Longitude of current position\r\n * @returns {void}\r\n */\r\n function searchByLocation(lat, lng) {\r\n if (!_ready || !lat || !lng) {\r\n return;\r\n }\r\n\r\n window.dataLayer.push({\r\n 'event': 'ce.misc',\r\n 'eventCategory': 'Misc',\r\n 'eventAction': 'Storefinder',\r\n 'eventLabel': lat + '-' + lng,\r\n 'eventValue': undefined,\r\n 'nonInteraction': false,\r\n 'searchResults': '300'\r\n });\r\n\r\n document.activeElement.blur();\r\n\r\n vm.searchLoading = true;\r\n vm.stores = [];\r\n\r\n $window.jwsdwMediator.publish('updateBreadcrumbs', [\r\n {\r\n 'text': TEXTS.title,\r\n 'url': $window.location.pathname\r\n }\r\n ]);\r\n\r\n clearMarkers();\r\n\r\n storeService\r\n .searchByLocation(lat, lng)\r\n .then(searchSuccess, searchError);\r\n\r\n /**\r\n * @description Method called on success\r\n * @param {Object} response response object\r\n * @param {Object} response.stores stores container\r\n * @param {Object[]} response.stores.stores array of stores\r\n * @param {Object} response.stores.myStore myStore object\r\n * @param {Object} response.position coordinates container\r\n * @param {Number} response.position.lat latitude\r\n * @param {Number} response.position.lng longitude\r\n * @returns {void}\r\n */\r\n function searchSuccess(response) {\r\n vm.searchLoading = false;\r\n _stores = response.stores.stores;\r\n\r\n if (response.stores.myStore) {\r\n response.stores.myStore.myStore = true;\r\n _stores.unshift(response.stores.myStore);\r\n }\r\n gmap.setCenter(response.position);\r\n gmap.setZoom(9);\r\n\r\n _centerViewportOnMap();\r\n\r\n renderStores(_stores);\r\n }\r\n\r\n /**\r\n * @description Method called on error\r\n * @returns {void}\r\n */\r\n function searchError() {\r\n vm.searchLoading = false;\r\n vm.stores = [];\r\n vm.error = 'SEARCH_ERROR';\r\n setTimeout(resizeMap, 200); // resize map after CSS animation\r\n }\r\n }\r\n\r\n /**\r\n * @param {String[]} storeIds array of store Ids\r\n * @returns {void}\r\n */\r\n function getStores(storeIds) {\r\n if (!_ready || !storeIds || storeIds.length === 0) {\r\n return;\r\n }\r\n\r\n document.activeElement.blur();\r\n\r\n vm.searchLoading = true;\r\n vm.stores = [];\r\n\r\n clearMarkers();\r\n\r\n storeService\r\n .getStores(storeIds, $window.jwsdwSettings.countryCode)\r\n .then(searchSuccess, searchError);\r\n\r\n /**\r\n * @description Method called on success\r\n * @param {Object} response response object\r\n * @param {Object[]} response.stores array of stores\r\n * @param {Object} response.myStore myStore object\r\n * @returns {void}\r\n */\r\n function searchSuccess(response) {\r\n vm.searchLoading = false;\r\n _stores = response.stores;\r\n if (response.myStore) {\r\n response.myStore.myStore = true;\r\n _stores.unshift(response.myStore);\r\n }\r\n\r\n gmap.setCenter(_getCenter(_stores));\r\n gmap.setZoom(7);\r\n\r\n _centerViewportOnMap();\r\n\r\n renderStores(_stores);\r\n }\r\n\r\n /**\r\n * @description Method called on error\r\n * @returns {void}\r\n */\r\n function searchError() {\r\n vm.searchLoading = false;\r\n vm.stores = [];\r\n vm.error = 'SEARCH_ERROR';\r\n setTimeout(resizeMap, 200); // resize map after CSS animation\r\n }\r\n }\r\n\r\n\r\n /**\r\n * @description Method to locate user's position and perform search\r\n * @returns {void}\r\n */\r\n function locatePosition() {\r\n vm.stores = [];\r\n vm.positionLocated = true;\r\n\r\n locationService.geolocateAdress().then(locateSuccess, locateError);\r\n\r\n /**\r\n * @description Method called on success\r\n * @param {Object} position position object\r\n * @param {Number} position.lat latitude\r\n * @param {Number} position.lng longitude\r\n * @returns {void}\r\n */\r\n function locateSuccess(position) {\r\n clearFilters(false);\r\n searchByLocation(position.lat, position.lng);\r\n }\r\n\r\n /**\r\n * @description Method called on error\r\n * @param {String} err location error message\r\n * @returns {void}\r\n */\r\n function locateError(err) {\r\n vm.error = err;\r\n vm.stores = [];\r\n setTimeout(resizeMap, 200); // resize map after CSS animation\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to perform search on form submit\r\n * @param {String} searchQuery searchQuery\r\n * @returns {void}\r\n */\r\n function onSearchSubmit(searchQuery) {\r\n clearFilters();\r\n searchByAddress(searchQuery);\r\n }\r\n\r\n /**\r\n * @description Method to render stores\r\n * @param {Object[]} stores array of stores\r\n * @param {String} stores[].id store id\r\n * @param {Number} stores[].lat latitude\r\n * @param {Number} stores[].lng longitude\r\n * @param {String} stores[].storeType store type\r\n * @returns {void}\r\n */\r\n function renderStores(stores) {\r\n if (stores && stores.length > 0) {\r\n vm.stores = vm.stores.map(function(store) {\r\n store.storeType = storeService.getStoreType(store);\r\n return store;\r\n });\r\n vm.stores = _filterStores(stores, vm.filter).sort(sortStores);\r\n\r\n vm.stores.forEach(function(store) {\r\n store && renderGoogleMapMarker(store);\r\n });\r\n if (vm.selectedPromos.length > 0) {\r\n consolidateMarkers();\r\n }\r\n if (vm.stores.length === 0) {\r\n vm.error = 'NO_PARTICIPATING_STORES';\r\n } else {\r\n vm.error = null;\r\n }\r\n } else {\r\n vm.error = 'SEARCH_ERROR';\r\n }\r\n\r\n setTimeout(resizeMap, 200); // resize map after CSS animation\r\n }\r\n\r\n /**\r\n * @description Method to cluster markers\r\n * @returns {void}\r\n */\r\n function consolidateMarkers() {\r\n new MarkerClusterer(gmap, markers, { // eslint-disable-line\r\n 'minimumClusterSize': 5,\r\n 'styles': [\r\n {\r\n 'url': CLUSTERIMAGEURL,\r\n 'width': 30,\r\n 'height': 39,\r\n 'anchorText': [-5, 0]\r\n }\r\n ]\r\n });\r\n }\r\n\r\n /**\r\n * @description Method to sort stores by store type - JW Store first\r\n * @param {Object} a store A\r\n * @param {Object} b store B\r\n * @returns {Number} 1, 0, -1\r\n */\r\n function sortStores(a, b) {\r\n if (/OwnStore|Franchise|Outlet/i.test(a.storeType) && !/OwnStore|Franchise|Outlet/i.test(b.storeType)) {\r\n return -1;\r\n } else if (!/OwnStore|Franchise|Outlet/i.test(a.storeType) && /OwnStore|Franchise|Outlet/i.test(b.storeType)) {\r\n return 1;\r\n }\r\n return a.distance < b.distance ? -1 : 1;\r\n }\r\n\r\n /**\r\n * @description Method to render google map marker for store\r\n * @param {Object} store store object\r\n * @param {String} store.id store id\r\n * @param {Number} store.lat latitude\r\n * @param {Number} store.lng longitude\r\n * @param {String} store.storeType store type\r\n * @returns {Boolean} true\r\n */\r\n function renderGoogleMapMarker(store) {\r\n var lat = Number(store.lat),\r\n lng = Number(store.lng),\r\n geoLocation = new $window.google.maps.LatLng(lat, lng),\r\n markerWidth = 32,\r\n markerHeight = 32,\r\n marker = new $window.google.maps.Marker({\r\n 'position': geoLocation,\r\n 'id' : store.id,\r\n 'storeType' : store.storeType,\r\n 'selected' : false,\r\n 'map': gmap,\r\n 'animation': $window.google.maps.Animation.DROP,\r\n 'icon': _markerIcon(store.storeType, markerWidth, markerHeight)\r\n });\r\n\r\n $window.google.maps.event.addListener(marker, 'click', function() {\r\n var searchResultsContainer = $('.jwsdw-storeFinder-verticalScroll'),\r\n storeCard = $('.jwsdw-storeCard[data-store-id=' + this.id + ']:visible'),\r\n storeId = this.id;\r\n\r\n selectStore(storeId);\r\n\r\n $scope.$apply(function() {\r\n vm.selectedStore = vm.stores.find(function(str) {\r\n return str.id === storeId;\r\n });\r\n });\r\n if (vm.mapView && vm.viewport === 'small') {\r\n setTimeout(function() {\r\n storeCard = $('.jwsdw-storeCard:visible'),\r\n $('html')[0].scrollTop = storeCard[0].getBoundingClientRect().top + document.documentElement.scrollTop - $('.jwsdw-header-module').height();\r\n });\r\n } else {\r\n _scrollToElement(searchResultsContainer[0], storeCard[0]);\r\n }\r\n });\r\n\r\n markers.push(marker);\r\n\r\n return marker;\r\n }\r\n\r\n /**\r\n * @description Method to clear markers on map\r\n * @returns {void}\r\n */\r\n function clearMarkers() {\r\n markers.forEach(function (marker) {\r\n marker.setMap(null);\r\n });\r\n markers = [];\r\n }\r\n\r\n /**\r\n * @description Method to get center coordinates of all stores\r\n * @param {Object[]} stores array of stores\r\n * @param {Number} stores[].lat latitude\r\n * @param {Number} stores[].lng longitude\r\n * @returns {Object} center coordinates\r\n */\r\n function _getCenter(stores) {\r\n var center = {'lat': 0, 'lng': 0};\r\n stores.forEach(function(store) {\r\n center.lat += Number(store.lat);\r\n center.lng += Number(store.lng);\r\n });\r\n\r\n center.lat /= stores.length;\r\n center.lng /= stores.length;\r\n\r\n return center;\r\n }\r\n\r\n /**\r\n * @description Method to open filter picker\r\n * @returns {void}\r\n */\r\n function openFilterPicker() {\r\n window.jwsdwMediator.publish('openPicker', 'filterPicker', vm);\r\n }\r\n\r\n /**\r\n * @description Method to apply filters\r\n * @param {Boolean} apply if true use scope apply function\r\n * @returns {void}\r\n */\r\n function applyFilters(apply) {\r\n if (apply) {\r\n $scope.$apply(filterStores);\r\n } else {\r\n filterStores();\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to filter stores\r\n * @returns {void}\r\n */\r\n function filterStores() {\r\n _filter = [];\r\n\r\n Object.keys(vm.filter).forEach(function(filterId) {\r\n if (vm.filter[filterId]) {\r\n _filter.push(filterId);\r\n }\r\n });\r\n\r\n if (_filter.length > 0) {\r\n $location.search('filter', _filter.join(','));\r\n } else {\r\n $location.search('filter', null);\r\n }\r\n\r\n vm.stores = _filterStores(_stores, vm.filter);\r\n\r\n if (vm.stores.length > 0) {\r\n vm.error = null;\r\n } else {\r\n vm.error = 'SEARCH_ERROR';\r\n }\r\n\r\n vm.filterCount = _filter.filter(function(filter) {\r\n return !/noJWStores|noRetailers|noOutlets/.test(filter);\r\n }).length;\r\n\r\n clearMarkers();\r\n\r\n vm.stores.forEach(function(store) {\r\n store && renderGoogleMapMarker(store);\r\n });\r\n if (vm.selectedPromos.length > 0) {\r\n consolidateMarkers();\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to clear all filters\r\n * @param {Boolean} apply if true use scope apply function\r\n * @param {Boolean} preventUpdate if true, don't update UI\r\n * @returns {void}\r\n */\r\n function clearFilters(apply, preventUpdate) {\r\n vm.filter = $scope.filter = {};\r\n window.jwsdwMediator.publish('updatePicker', 'filterPicker', {\r\n 'filter': vm.filter\r\n });\r\n\r\n if (!preventUpdate) {\r\n applyFilters(apply);\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to check if extra filter has results\r\n * @param {String} filterId filter ID\r\n * @param {Boolean} [standAlone] if true, other filters are not considered\r\n * @returns {Boolean} true if results are available\r\n */\r\n function filterHasResults(filterId, standAlone) {\r\n var filter = standAlone ? {} : angular.extend({}, vm.filter),\r\n filteredStores;\r\n\r\n filter[filterId] = true;\r\n filteredStores = _filterStores(vm.stores, filter);\r\n\r\n return filteredStores.length > 0;\r\n }\r\n\r\n /**\r\n * @description Method to check if extra filter has results\r\n * @returns {Boolean} true if results can be filtered\r\n */\r\n function canBeFiltered() {\r\n var availableFilter = vm.services.filter(function(service) {\r\n return filterHasResults(service.id, true);\r\n });\r\n return availableFilter.length > 0;\r\n }\r\n\r\n /**\r\n * @description Method to resize map\r\n * @returns {void}\r\n */\r\n function resizeMap() {\r\n var center = gmap.getCenter();\r\n $window.google.maps.event.trigger(gmap, 'resize');\r\n gmap.setCenter(center);\r\n }\r\n\r\n /**\r\n * @description Method to generate Icon Object for given store type and size\r\n * @param {String} storeType store type\r\n * @param {Number} width width\r\n * @param {Number} height height\r\n * @returns {Object} icon object for google maps markers\r\n */\r\n function _markerIcon(storeType, width, height) {\r\n return {\r\n 'url': 'data:image/svg+xml;charset=UTF-8;base64,' + btoa(ICONS[storeType]),\r\n 'scaledSize': new $window.google.maps.Size(width, height),\r\n 'origin': new $window.google.maps.Point(0, 0),\r\n 'anchor': new $window.google.maps.Point(width / 2, height)\r\n };\r\n }\r\n\r\n /**\r\n * @description Method to highlight store card and pin\r\n * @param {String} storeId store id\r\n * @returns {void}\r\n */\r\n function selectStore(storeId) {\r\n var storeCards = $('.jwsdw-storeCard'),\r\n storeCard = $('.jwsdw-storeCard[data-store-id=' + storeId + ']');\r\n\r\n markers.forEach(function(marker) {\r\n if (marker.id === storeId) {\r\n marker.setIcon(_markerIcon(marker.storeType + '-selected', 64, 64));\r\n marker.selected = true;\r\n marker.setZIndex(9999);\r\n gmap.setCenter(marker.position);\r\n } else if (marker.selected) {\r\n marker.setIcon(_markerIcon(marker.storeType, 32, 32));\r\n marker.selected = false;\r\n marker.setZIndex(1);\r\n }\r\n });\r\n\r\n storeCards.removeClass('jwsdw-storeCard-active');\r\n storeCard.addClass('jwsdw-storeCard-active');\r\n vm.stores.forEach(function(store) {\r\n store.selected = store.id === storeId;\r\n });\r\n }\r\n /**\r\n * @description Method to highlight store card and pin\r\n * @param {String} storeId store id\r\n * @returns {void}\r\n */\r\n function highlightStore(storeId) {\r\n markers\r\n .filter(function(marker) {\r\n return !marker.selected;\r\n })\r\n .forEach(function(marker) {\r\n if (marker.id === storeId) {\r\n marker.setIcon(_markerIcon(marker.storeType, 48, 48));\r\n marker.highlighted = true;\r\n marker.setZIndex(9999);\r\n } else if (marker.highlighted) {\r\n marker.setIcon(_markerIcon(marker.storeType, 32, 32));\r\n marker.highlighted = false;\r\n marker.setZIndex(1);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description Method to scroll to storeCard\r\n * @param {Object} container DOM element\r\n * @param {Object} element DOM element\r\n * @returns {void}\r\n */\r\n function _scrollToElement(container, element) {\r\n container.scrollTop = element.offsetTop - 75;\r\n }\r\n\r\n /**\r\n * @description Method to scroll center of map\r\n * @returns {void}\r\n */\r\n function _centerViewportOnMap() {\r\n if (vm.mapView && vm.viewport === 'small') {\r\n $('html')[0].scrollTop = $map.getBoundingClientRect().top + ($map.clientHeight / 2) - (window.innerHeight / 2) + document.documentElement.scrollTop;\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to filter array by given filters\r\n * @param {Object[]} stores array of store objects\r\n * @param {Object} filters filter object containing various custom filters\r\n * @returns {Object[]} array of stores\r\n * @private\r\n */\r\n function _filterStores(stores, filters) {\r\n vm.selectedPromos.forEach(function (promo) {\r\n filters[promo] = true;\r\n });\r\n\r\n Object.keys(filters).forEach(function(filter) {\r\n if (!filters[filter]) {\r\n return;\r\n }\r\n if (filter === 'noJWStores') {\r\n stores = stores.filter(function(store) {\r\n return !/store|franchise/i.test(store.storeType);\r\n });\r\n } else if (filter === 'noRetailers') {\r\n stores = stores.filter(function(store) {\r\n return !/retailer/i.test(store.storeType);\r\n });\r\n } else if (filter === 'noOutlets') {\r\n stores = stores.filter(function(store) {\r\n return !/outlet/i.test(store.storeType);\r\n });\r\n } else {\r\n stores = stores.filter(function (store) {\r\n var promoService = _promoServices.find(function(prmSrvc) {\r\n return prmSrvc.id === filter;\r\n });\r\n if (!promoService) {\r\n return false;\r\n }\r\n return promoService.participatingStores.indexOf(store.id) !== -1;\r\n });\r\n }\r\n });\r\n\r\n return stores;\r\n }\r\n }\r\n}(angular, jQuery));\r\n","'use strict';\r\n\r\n(function (angular) {\r\n customAutofocus.$inject = ['$timeout'];\r\n angular\r\n .module('jwsdw.storeFinder')\r\n .directive('customAutofocus', customAutofocus);\r\n\r\n\r\n /**\r\n * @description Set autofocus directive\r\n * @param {Function} $timeout the angularjs setTimeout abstraction\r\n * @returns {{link: link, restrict: string}} directive\r\n */\r\n function customAutofocus($timeout) {\r\n return {\r\n 'restrict': 'A',\r\n 'link': function(scope, element) {\r\n if (window.jwsdwStorefinderSettings.autofocus) {\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0);\r\n }\r\n }\r\n };\r\n }\r\n}(angular));","'use strict';\r\n\r\n(function (angular) {\r\n // initialize store finder angular app\r\n // bootstrap app manually as only the first app on a page can be initialized by data-ng-app (which is the framework/header)\r\n angular.bootstrap(document.getElementById('jwsdw-storeFinder'), ['jwsdw.storeFinder']);\r\n}(angular));"],"names":["MarkerClusterer","e","t","TypeError","i","length","s","enumerable","configurable","writable","Object","defineProperty","key","prototype","create","constructor","value","r","n","setPrototypeOf","getPrototypeOf","__proto__","a","ReferenceError","l","this","google","maps","OverlayView","c","cluster_","getMarkerClusterer","version","split","Array","isArray","Symbol","iterator","toString","call","o","next","done","push","return","parseInt","div_","document","createElement","className","className_","visible_","show","getPanes","overlayMouseTarget","appendChild","boundsChangedListener_","event","addListener","getMap","addDomListener","stopPropagation","trigger","getZoomOnClick","getMaxZoom","getBounds","fitBounds","setTimeout","getZoom","setZoom","cancelBubble","parentNode","hide","removeListener","clearInstanceListeners","removeChild","getPosFromLatLng_","center_","style","top","y","left","x","display","u","h","ariaLabelFn","sums_","text","backgroundPosition_","replace","cssText","createCss_","getEnableRetinaIcons","concat","width_","height_","join","anchorText_","textColor_","textSize_","fontFamily_","fontWeight_","fontStyle_","textDecoration_","innerHTML","url_","title","getTitle","Math","max","index","min","styles_","url","height","width","anchorText","anchorIcon_","anchorIcon","floor","textColor","textSize","textDecoration","fontWeight","fontStyle","fontFamily","backgroundPosition","getZIndex","getProjection","fromLatLngToDivPixel","markers_","map_","markerClusterer_","LatLngBounds","getMarkers","extend","getPosition","clusterIcon_","setMap","isMarkerAlreadyAdded_","averageCenter_","lat","lng","LatLng","calculateBounds_","isAdded","minClusterSize_","updateIcon_","bounds_","contains","getExtendedBounds","getStyles","getCalculator","setCenter","useStyle","indexOf","_","activeMap_","ready_","repaint","prevZoom_","listeners_","minZoom","maxZoom","mapTypes","getMapTypeId","resetViewport_","redraw_","clusters_","remove","imageSizes_","imagePath_","imageExtension_","getVisible","getIgnoreHidden","gridSize_","maxZoom_","zIndex_","title_","zoomOnClick_","ignoreHidden_","enableRetinaIcons_","calculator_","batchSizeIE_","clusterClass_","pushMarkerTo_","hasOwnProperty","getDraggable","removeMarker_","splice","slice","getNorthEast","getSouthWest","fromDivPixelToLatLng","createClusters_","PI","sin","cos","atan2","sqrt","getCenter","distanceBetweenPoints_","isMarkerInClusterBounds","addMarker","timerRefStatic","clearTimeout","batchSize_","isMarkerInBounds_","addToClosestCluster_","window","arguments","options","zIndex","Marker","MAX_ZINDEX","gridSize","minimumClusterSize","styles","imagePath","IMAGE_PATH","imageExtension","IMAGE_EXTENSION","imageSizes","IMAGE_SIZES","calculator","CALCULATOR","batchSize","BATCH_SIZE","batchSizeIE","BATCH_SIZE_IE","clusterClass","navigator","userAgent","toLowerCase","setupStyles_","addMarkers","getMinimumClusterSize","getAverageCenter","getClusterClass","angular","module","constant","jwsdwStorefinderSettings","mapDefaults","storePromotions","selectedPromotions","storeServices","OwnStore","OwnStore-selected","Franchise","Franchise-selected","Retailer","Retailer-selected","Outlet","Outlet-selected","markers","clusterer","texts","$","StoreFinderController","$scope","$location","$window","$document","locationService","storeService","MAPSETTINGS","PROMOTIONS","SELECTEDPROMOS","SERVICES","ICONS","CLUSTERIMAGEURL","TEXTS","IS_GOOGLE_AVAILABLE","gmap","vm","$map","getElementById","_ready","_filter","search","filter","_stores","_promoServices","activateMaps","mapOptions","center","zoom","mapTypeId","MapTypeId","ROADMAP","draggable","disableDefaultUI","streetViewControl","mapTypeControl","zoomControl","test","viewport","Map","searchQuery","searchByAddress","selectedPromos","getStores","promotions","services","reduce","promoStores","promo","id","participatingStores","setOptions","resizeMap","searchError","searchLoading","stores","selectedStore","error","activeElement","blur","positionLocated","jwsdwMediator","publish","location","pathname","clearMarkers","then","response","myStore","unshift","position","_centerViewportOnMap","renderStores","dataLayer","eventCategory","eventAction","eventLabel","eventValue","undefined","nonInteraction","searchResults","searchByLocation","storeIds","jwsdwSettings","countryCode","_getCenter","map","store","storeType","getStoreType","_filterStores","sort","sortStores","forEach","renderGoogleMapMarker","consolidateMarkers","b","distance","Number","geoLocation","marker","selected","animation","Animation","DROP","icon","_markerIcon","searchResultsContainer","storeCard","storeId","selectStore","$apply","find","str","mapView","scrollTop","getBoundingClientRect","documentElement","_scrollToElement","applyFilters","apply","filterStores","keys","filterId","filterCount","clearFilters","preventUpdate","filterHasResults","standAlone","btoa","scaledSize","Size","origin","Point","anchor","storeCards","setIcon","setZIndex","removeClass","addClass","container","element","offsetTop","clientHeight","innerHeight","filters","promoService","prmSrvc","locatePosition","geolocateAdress","err","onSearchSubmit","highlightStore","highlighted","locationError","service","random","round","Date","getTime","promotion","picture","openFilterPicker","canBeFiltered","$onInit","subscribe","f","$inject","config","$locationProvider","html5Mode","controller","jQuery","customAutofocus","$timeout","restrict","link","scope","autofocus","focus","directive","bootstrap"],"mappings":"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"}