{"version":3,"file":"default/js/storeLocator.js","mappings":"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","sources":["webpack://sfra-cisalfa/./cartridges/app_storefront_base/cartridge/client/default/js/storeLocator/storeLocator.js","webpack://sfra-cisalfa/./cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack://sfra-cisalfa/webpack/bootstrap","webpack://sfra-cisalfa/./cartridges/app_storefront_base/cartridge/client/default/js/storeLocator.js"],"sourcesContent":["/* globals google */\n\n'use strict';\n\n/**\n * appends params to a url\n * @param {string} url - Original url\n * @param {Object} params - Parameters to append\n * @returns {string} result url with appended parameters\n */\nfunction appendToUrl(url, params) {\n var newUrl = url;\n newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(params).map(function (key) {\n return key + '=' + encodeURIComponent(params[key]);\n }).join('&');\n\n return newUrl;\n}\n\n/**\n * Uses google maps api to render a map\n */\nfunction maps() {\n var map;\n var infowindow = new google.maps.InfoWindow();\n\n // Init U.S. Map in the center of the viewport\n var latlng = new google.maps.LatLng(37.09024, -95.712891);\n var mapOptions = {\n scrollwheel: false,\n zoom: 4,\n center: latlng\n };\n\n map = new google.maps.Map($('.map-canvas')[0], mapOptions);\n var mapdiv = $('.map-canvas').attr('data-locations');\n\n mapdiv = JSON.parse(mapdiv);\n\n var bounds = new google.maps.LatLngBounds();\n\n // Customized google map marker icon with svg format\n var markerImg = {\n path: 'M13.5,30.1460153 L16.8554555,25.5 L20.0024287,25.5 C23.039087,25.5 25.5,'\n + '23.0388955 25.5,20.0024287 L25.5,5.99757128 C25.5,2.96091298 23.0388955,0.5 '\n + '20.0024287,0.5 L5.99757128,0.5 C2.96091298,0.5 0.5,2.96110446 0.5,5.99757128 '\n + 'L0.5,20.0024287 C0.5,23.039087 2.96110446,25.5 5.99757128,25.5 L10.1445445,'\n + '25.5 L13.5,30.1460153 Z',\n fillColor: '#0070d2',\n fillOpacity: 1,\n scale: 1.1,\n strokeColor: 'white',\n strokeWeight: 1,\n anchor: new google.maps.Point(13, 30),\n labelOrigin: new google.maps.Point(12, 12)\n };\n\n Object.keys(mapdiv).forEach(function (key) {\n var item = mapdiv[key];\n var lable = parseInt(key, 10) + 1;\n var storeLocation = new google.maps.LatLng(item.latitude, item.longitude);\n var marker = new google.maps.Marker({\n position: storeLocation,\n map: map,\n title: item.name,\n icon: markerImg,\n label: { text: lable.toString(), color: 'white', fontSize: '16px' }\n });\n\n marker.addListener('click', function () {\n infowindow.setOptions({\n content: item.infoWindowHtml\n });\n infowindow.open(map, marker);\n });\n\n // Create a minimum bound based on a set of storeLocations\n bounds.extend(marker.position);\n });\n // Fit the all the store marks in the center of a minimum bounds when any store has been found.\n if (mapdiv && mapdiv.length !== 0) {\n map.fitBounds(bounds);\n }\n}\n\n/**\n * Renders the results of the search and updates the map\n * @param {Object} data - Response from the server\n */\nfunction updateStoresResults(data) {\n var $resultsDiv = $('.results');\n var $mapDiv = $('.map-canvas');\n var hasResults = data.stores.length > 0;\n\n if (!hasResults) {\n $('.store-locator-no-results').show();\n } else {\n $('.store-locator-no-results').hide();\n }\n\n $resultsDiv.empty()\n .data('has-results', hasResults)\n .data('radius', data.radius)\n .data('search-key', data.searchKey);\n\n $mapDiv.attr('data-locations', data.locations);\n\n if ($mapDiv.data('has-google-api')) {\n maps();\n } else {\n $('.store-locator-no-api-key').show();\n }\n\n if (data.storesResultsHtml) {\n $resultsDiv.append(data.storesResultsHtml);\n }\n}\n\n/**\n * Search for stores with new zip code\n * @param {HTMLElement} element - the target html element\n * @returns {boolean} false to prevent default event\n */\nfunction search(element) {\n var dialog = element.closest('.in-store-inventory-dialog');\n var spinner = dialog.length ? dialog.spinner() : $.spinner();\n spinner.start();\n var $form = element.closest('.store-locator');\n var radius = $('.results').data('radius');\n var url = $form.attr('action');\n var urlParams = { radius: radius };\n\n var payload = $form.is('form') ? $form.serialize() : { postalCode: $form.find('[name=\"postalCode\"]').val() };\n\n url = appendToUrl(url, urlParams);\n\n $.ajax({\n url: url,\n type: $form.attr('method'),\n data: payload,\n dataType: 'json',\n success: function (data) {\n spinner.stop();\n updateStoresResults(data);\n $('.select-store').prop('disabled', true);\n }\n });\n return false;\n}\n\nmodule.exports = {\n init: function () {\n if ($('.map-canvas').data('has-google-api')) {\n maps();\n } else {\n $('.store-locator-no-api-key').show();\n }\n\n if (!$('.results').data('has-results')) {\n $('.store-locator-no-results').show();\n }\n },\n\n detectLocation: function () {\n // clicking on detect location.\n $('.detect-location').on('click', function () {\n $.spinner().start();\n if (!navigator.geolocation) {\n $.spinner().stop();\n return;\n }\n\n navigator.geolocation.getCurrentPosition(function (position) {\n var $detectLocationButton = $('.detect-location');\n var url = $detectLocationButton.data('action');\n var radius = $('.results').data('radius');\n var urlParams = {\n radius: radius,\n lat: position.coords.latitude,\n long: position.coords.longitude\n };\n\n url = appendToUrl(url, urlParams);\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n $.spinner().stop();\n updateStoresResults(data);\n $('.select-store').prop('disabled', true);\n }\n });\n });\n });\n },\n\n search: function () {\n $('.store-locator-container form.store-locator').submit(function (e) {\n e.preventDefault();\n search($(this));\n });\n $('.store-locator-container .btn-storelocator-search[type=\"button\"]').click(function (e) {\n e.preventDefault();\n search($(this));\n });\n },\n\n changeRadius: function () {\n $('.store-locator-container .radius').change(function () {\n var radius = $(this).val();\n var searchKeys = $('.results').data('search-key');\n var url = $(this).data('action-url');\n var urlParams = {};\n\n if (searchKeys.postalCode) {\n urlParams = {\n radius: radius,\n postalCode: searchKeys.postalCode\n };\n } else if (searchKeys.lat && searchKeys.long) {\n urlParams = {\n radius: radius,\n lat: searchKeys.lat,\n long: searchKeys.long\n };\n }\n\n url = appendToUrl(url, urlParams);\n var dialog = $(this).closest('.in-store-inventory-dialog');\n var spinner = dialog.length ? dialog.spinner() : $.spinner();\n spinner.start();\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n spinner.stop();\n updateStoresResults(data);\n $('.select-store').prop('disabled', true);\n }\n });\n });\n },\n selectStore: function () {\n $('.store-locator-container').on('click', '.select-store', (function (e) {\n e.preventDefault();\n var selectedStore = $(':checked', '.results-card .results');\n var data = {\n storeID: selectedStore.val(),\n searchRadius: $('#radius').val(),\n searchPostalCode: $('.results').data('search-key').postalCode,\n storeDetailsHtml: selectedStore.siblings('label').find('.store-details').html(),\n event: e\n };\n\n $('body').trigger('store:selected', data);\n }));\n },\n updateSelectStoreButton: function () {\n $('body').on('change', '.select-store-input', (function () {\n $('.select-store').prop('disabled', false);\n }));\n }\n};\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","'use strict';\n\nvar processInclude = require('./util');\n\n$(document).ready(function () {\n processInclude(require('./storeLocator/storeLocator'));\n});\n"],"names":["appendToUrl","url","params","newUrl","indexOf","Object","keys","map","key","encodeURIComponent","join","maps","infowindow","google","InfoWindow","mapOptions","scrollwheel","zoom","center","LatLng","Map","$","mapdiv","attr","JSON","parse","bounds","LatLngBounds","markerImg","path","fillColor","fillOpacity","scale","strokeColor","strokeWeight","anchor","Point","labelOrigin","forEach","item","lable","parseInt","storeLocation","latitude","longitude","marker","Marker","position","title","name","icon","label","text","toString","color","fontSize","addListener","setOptions","content","infoWindowHtml","open","extend","length","fitBounds","updateStoresResults","data","$resultsDiv","$mapDiv","hasResults","stores","hide","show","empty","radius","searchKey","locations","storesResultsHtml","append","search","element","dialog","closest","spinner","start","$form","urlParams","payload","is","serialize","postalCode","find","val","ajax","type","dataType","success","stop","prop","module","exports","init","detectLocation","on","navigator","geolocation","getCurrentPosition","lat","coords","long","submit","e","preventDefault","this","click","changeRadius","change","searchKeys","selectStore","selectedStore","storeID","searchRadius","searchPostalCode","storeDetailsHtml","siblings","html","event","trigger","updateSelectStoreButton","include","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","processInclude","require","document","ready"],"sourceRoot":""}